文章目录
- [一、Java Web的发展历程](#一、Java Web的发展历程)
- [二、Spring MVC快速入门实战](#二、Spring MVC快速入门实战)
-
- 1.环境搭建步骤
-
- [(1)创建Maven Web工程](#(1)创建Maven Web工程)
- (2)配置web.xml
- [(3) Spring MVC配置文件(springmvc.xml)](#(3) Spring MVC配置文件(springmvc.xml))
- [(4) 编写Controller](#(4) 编写Controller)
- [(5) 创建视图页面](#(5) 创建视图页面)
- [三、Spring MVC核心原理剖析](#三、Spring MVC核心原理剖析)
-
- 1.请求处理全流程
- 2.核心组件详解
-
- [(1)Spring MVC 核心组件功能表](#(1)Spring MVC 核心组件功能表)
- (2)组件协作示意图
- 3.架构优势分析
- 总结
一、Java Web的发展历程
1.Model I与Model II开发模式
(1) Model I开发模式
核心架构 :JSP + JavaBean
流程特点:
- JSP页面直接处理用户请求、执行业务逻辑(通过JavaBean)并渲染页面
- 优点:快速开发小型项目
- 致命缺陷:视图展示与业务逻辑高度耦合,JSP文件臃肿,维护困难
c
浏览器请求 → JSP接收请求 → 调用JavaBean → JSP渲染响应
(2)Model II开发模式
核心架构 :JSP + Servlet + JavaBean
分层思想:
- JSP:专注视图渲染
- Servlet:负责流程控制(Controller前身)
- JavaBean:处理业务逻辑(Service/DAO层)
c
浏览器请求 → Servlet接收 → 调用JavaBean → 转发结果至JSP → 渲染响应
划时代意义:首次实现MVC分层,支持中大型项目开发(2000年代主流架构)
2.MVC设计模式
Spring MVC本质
Spring MVC本质:基于Servlet的增强框架,核心思想遵循MVC规范
组件 | 核心职责 | 实现示例 |
---|---|---|
Model | 1. 处理业务逻辑 2. 封装数据对象 | - @Service 标注的业务类 - 实体类(如User.java ) - DAO层实现类 |
View | 1. 数据可视化展示 2. 用户交互界面 | - JSP页面(*.jsp ) - Thymeleaf模板(*.html ) - JSON响应(@ResponseBody ) |
Controller | 1. 接收请求 2. 调用业务层 3. 返回响应 | - @Controller 注解类 - @RequestMapping 方法 (如/user/login 映射) |
MVC工作流程
- 用户通过View发起请求
- Controller接收并解析请求参数
- 调用Model层处理业务逻辑
- 返回处理结果至View渲染
二、Spring MVC快速入门实战
1.环境搭建步骤
(1)创建Maven Web工程
关键依赖:
c
<dependencies>
<!-- Spring MVC核心 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.18</version>
</dependency>
<!-- 视图模板引擎 -->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
<version>3.0.14.RELEASE</version>
</dependency>
<!-- Servlet API -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
</dependencies>
(2)配置web.xml
核心配置项:
c
<!-- 字符编码过滤器 -->
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<!-- DispatcherServlet配置 -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 映射规则 -->
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
(3) Spring MVC配置文件(springmvc.xml)
c
<!-- 组件扫描 -->
<context:component-scan base-package="com.example.controller"/>
<!-- Thymeleaf视图解析 -->
<bean id="templateResolver" class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".html"/>
<property name="templateMode" value="HTML5"/>
</bean>
<bean id="templateEngine" class="org.thymeleaf.spring5.SpringTemplateEngine">
<property name="templateResolver" ref="templateResolver"/>
</bean>
<bean class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
<property name="templateEngine" ref="templateEngine"/>
<property name="characterEncoding" value="UTF-8"/>
</bean>
<!-- 开启注解驱动 -->
<mvc:annotation-driven/>
(4) 编写Controller
c
@Controller
public class HelloController {
@RequestMapping("/hello")
public String sayHello(Model model) {
model.addAttribute("message", "Welcome to Spring MVC!");
return "result"; // 对应/WEB-INF/views/result.html
}
}
(5) 创建视图页面
result.html(Thymeleaf模板):
c
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Result Page</title>
</head>
<body>
<h1 th:text="${message}">Default Message</h1>
</body>
</html>
三、Spring MVC核心原理剖析
1.请求处理全流程
(1)DispatcherServlet接收请求
- 作为统一入口拦截所有请求
- 通过HandlerMapping查找匹配的Controller方法
(2)HandlerAdapter执行方法
- 参数绑定:自动将请求参数映射到方法参数
- 执行@RequestMapping标注的方法
(3)处理返回结果
- 返回String:通过ViewResolver解析为具体视图
- 返回@ResponseBody:直接序列化为JSON
(4)视图渲染
- 模板引擎处理动态内容
- 生成最终HTML响应
2.核心组件详解
(1)Spring MVC 核心组件功能表
组件名称 | 职责说明 | 实现示例 |
---|---|---|
DispatcherServlet | 前端控制器,统一处理所有HTTP请求和响应,协调各组件工作流程 | 在web.xml 中配置的核心Servlet,默认名称dispatcher ,处理所有/ 请求 |
HandlerMapping | 建立请求URL与Controller方法的映射关系 | RequestMappingHandlerMapping (基于@RequestMapping 注解的映射策略) |
HandlerAdapter | 实际执行Controller方法,处理参数绑定、数据转换、验证等核心逻辑 | RequestMappingHandlerAdapter (支持基于注解的处理器方法) |
ViewResolver | 将Controller返回的逻辑视图名解析为具体的视图实现(HTML/JSON等) | InternalResourceViewResolver (JSP)、ThymeleafViewResolver (模板引擎) |
HandlerExceptionResolver | 统一处理Controller层抛出的异常,返回定制化错误响应 | ExceptionHandlerExceptionResolver (配合@ExceptionHandler 使用) |
(2)组件协作示意图

3.架构优势分析
- 松耦合设计:各组件通过接口定义,易于扩展
- 注解驱动开发:@Controller、@RequestMapping简化配置
- 强大的数据绑定:自动处理表单数据、JSON转换
- 视图技术无关性:支持JSP、Thymeleaf、FreeMarker等
总结
Spring MVC通过清晰的层次划分和强大的扩展能力,已成为Java Web开发的事实标准。理解其核心原理并掌握配置技巧,是构建高性能Web应用的关键。建议通过Debug模式跟踪请求处理流程,深入体会各组件协作机制。