Spring MVC的基本概念

  1. Spring MVC 的核心概念

Spring MVC 是基于 MVC 设计模式的框架,其核心组件包括:

  • Controller(控制器):接收用户请求,处理业务逻辑,并返回视图名称或数据。

  • Model(模型):封装数据,通常是一个 JavaBean,用于在控制器和视图之间传递数据。

  • View(视图):负责展示数据,通常是 JSP、Thymeleaf 或其他模板引擎生成的页面。

2. Spring MVC 的工作流程

  1. 用户发送请求到前端控制器(DispatcherServlet)。

  2. DispatcherServlet 根据请求信息调用 HandlerMapping 来查找 Handler(Controller)。

  3. HandlerMapping 返回 Handler 的执行链(包括拦截器)。

  4. DispatcherServlet 调用 HandlerAdapter 来执行 Handler。

  5. HandlerAdapter 调用 Handler,并返回一个 ModelAndView 对象。

  6. DispatcherServlet 根据 ModelAndView 中的视图信息,调用 ViewResolver 解析视图。

  7. ViewResolver 返回具体的 View。

  8. DispatcherServlet 将数据填充到 View 中,并渲染视图。

  9. 最终将响应返回给用户。

3. Spring MVC 的核心组件

  • DispatcherServlet:前端控制器,是整个 Spring MVC 的核心。它负责接收请求、分发请求到对应的处理器,并返回响应。

  • HandlerMapping:处理器映射器,用于根据请求信息(如 URL、HTTP 方法等)找到对应的处理器(Controller)。

  • HandlerAdapter:处理器适配器,用于执行处理器(Controller)的方法,并返回一个 ModelAndView 对象。

  • ViewResolver:视图解析器,用于将逻辑视图名称解析为具体的视图实现(如 JSP 页面)。

  • Controller:控制器,用于处理用户请求,执行业务逻辑,并返回视图或数据。

4. Spring MVC 的配置

Spring MVC 的配置可以通过 XML 配置文件或注解来完成。以下是常见的配置方式:

基于注解的配置
  1. @Controller:标记一个类为控制器。

  2. @RequestMapping:用于映射请求到控制器方法。

  3. @RequestParam:用于绑定请求参数到方法参数。

  4. @PathVariable:用于绑定 URL 中的占位符到方法参数。

  5. @ModelAttribute:用于将方法参数绑定到模型中。

  6. @ResponseBody:用于将方法返回值直接写入 HTTP 响应体。

  7. @RestController:用于定义 RESTful 风格的控制器,相当于 @Controller + @ResponseBody。

基于 XML 的配置

web.xml 中配置 DispatcherServlet:

xml复制

复制代码
<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

dispatcher-servlet.xml 中配置组件扫描和视图解析器:

xml复制

复制代码
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="...">

    <context:component-scan base-package="com.example.controller" />
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/views/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

5. Spring MVC 的优点

  1. 松耦合:通过注解和配置文件,实现了控制器、模型和视图之间的低耦合。

  2. 易于测试:控制器方法可以独立于 Servlet API 进行测试。

  3. 高度灵活:支持多种视图技术(如 JSP、Thymeleaf、Freemarker)。

  4. 与 Spring 框架无缝集成:可以方便地与其他 Spring 模块(如 Spring Data、Spring Security)集成。

  5. 支持 RESTful 风格的开发:通过注解和配置,可以轻松开发 RESTful 风格的 Web 应用。

6. Spring MVC 的应用场景

Spring MVC 适用于各种基于 Java 的 Web 应用开发,尤其是企业级应用。它支持传统的 Web 应用开发和 RESTful 风格的 API 开发。

使用Spring JDBC模板(JdbcTemplate)集成数据库

Spring JDBC模板是Spring提供的一个简化数据库操作的工具,它封装了JDBC的复杂操作,使得开发者可以更方便地执行SQL语句。步骤1:配置数据源(DataSource),步骤2:配置JdbcTemplate,步骤3:在Service层或DAO层使用JdbcTemplate

总结

Spring MVC 是一个功能强大且灵活的 Web 开发框架,通过 MVC 设计模式实现了代码的清晰分层和低耦合。它与 Spring 框架的其他模块紧密集成,提供了丰富的功能和高度的可扩展性。

相关推荐
7哥♡ۣۖᝰꫛꫀꪝۣℋ6 小时前
Spring-cloud\Eureka
java·spring·微服务·eureka
老毛肚6 小时前
手写mybatis
java·数据库·mybatis
两点王爷6 小时前
Java基础面试题——【Java语言特性】
java·开发语言
choke2336 小时前
[特殊字符] Python 文件与路径操作
java·前端·javascript
choke2336 小时前
Python 基础语法精讲:数据类型、运算符与输入输出
java·linux·服务器
岁岁种桃花儿6 小时前
CentOS7 彻底卸载所有JDK/JRE + 重新安装JDK8(实操完整版,解决kafka/jps报错)
java·开发语言·kafka
一灰灰blog7 小时前
Spring AI中的多轮对话艺术:让大模型主动提问获取明确需求
数据库·人工智能·spring
roman_日积跬步-终至千里7 小时前
【Java并发】Java 线程池实战:警惕使用CompletableFuture.supplyAsync
java·开发语言·网络
毕设源码-钟学长7 小时前
【开题答辩全过程】以 基于Springboot的扶贫众筹平台为例,包含答辩的问题和答案
java·spring boot·后端
CodeSheep程序羊7 小时前
拼多多春节加班工资曝光,没几个敢给这个数的。
java·c语言·开发语言·c++·python·程序人生·职场和发展