知识点:
1.springmvc文档
知识点 |
核心内容 |
重点 |
Spring MVC 定义 |
基于 Spring 的 Web 层 MVC 框架 |
与 Spring 的关系(属于 Spring 部分) |
Spring MVC 文档位置 |
在 spring-webmvc 模块的 docs/javadoc 中 |
文档结构(DispatcherServlet、Filter、注解等) |
Spring MVC 与 Spring 的关系 |
Spring MVC 是 Spring 的子模块 |
单独讲解原因(功能重要性) |
快速入门流程 |
1. 文档查阅 2. 基础示例 3. 逐层深入 |
依赖包复用(与 Spring 核心包相同) |
2.SpringMVC特点和概述(1)
知识点 |
核心内容 |
重点 |
Spring MVC 特点 |
比 Struts2 更易用高效,接管 Web 层组件(控制器、视图解析等) |
Struts2 与 Spring MVC 的优劣对比 |
Spring MVC 定位 |
Web 层框架(完整名称:Spring Web MVC),支持 MVC 开发模式 |
Web 层与 MVC 模式的关系 |
MVC 架构解析 |
控制器(Servlet)→ 模型(业务逻辑)→ 视图(响应渲染) |
原生 Web 开发与 MVC 框架的差异 |
三层架构中的 Web 层 |
接收请求→调用 Service→返回响应(重定向/转发) |
Web 层技术多元化问题 |
框架接管优势 |
统一开发标准、提升效率、简化组件管理(如控制器、视图解析) |
无框架时的开发痛点 |
3.SpringMVC特点和概述(2)
知识点 |
核心内容 |
重点 |
Spring MVC控制器实现 |
通过注解(如@Controller)将POJO转为控制器,无需继承类或实现接口 |
对比传统Servlet开发(需继承HttpServlet) |
请求映射 |
方法级URL Pattern直接映射,简化开发 |
注解配置与XML配置的区别 |
低耦合设计 |
组件化设计提升扩展性和灵活性 |
与紧耦合架构的对比 |
REST风格支持 |
URL直接体现业务语义(增删改查) |
RESTful与传统URL差异 |
Spring依赖关系 |
必须基于Spring IOC容器运行,核心包为spring-web和spring-webmvc |
独立使用Spring MVC的可行性 |
4.Spring SpringMVC SpringBoot关系
知识点 |
核心内容 |
重点 |
Spring、Spring MVC、Spring Boot关系 |
Spring MVC是Spring处理Web层请求的模块,基于Servlet;Spring Boot是简化开发的框架,包含Spring和Spring MVC,遵循约定优于配置原则 |
Spring MVC与Servlet的关系、Spring Boot的包含层级 |
Spring MVC基石 |
本质基于JAVA Web原生Servlet |
若Servlet基础薄弱,理解Spring MVC会存在障碍 |
Spring Boot核心特性 |
通过约定优于配置优化Spring配置流程,整合SSM时对比更明显 |
“包含Spring和Spring MVC”的层级关系 |
5.SpringMVC快速入门(1)
知识点 |
核心内容 |
重点 |
Spring MVC快速入门 |
完成基本登录测试案例:登录页面→控制器处理→成功页面跳转 |
控制器注解使用 vs 原生Servlet开发 |
Spring MVC框架优势 |
框架自动处理请求映射、视图解析等底层逻辑 |
初期复杂度 vs 长期开发效率 |
请求处理流程 |
极简流程:DispatcherServlet→HandlerMapping→Controller→ViewResolver |
前端控制器与Tomcat的关系 |
学习路径设计 |
从简单案例逐步深入底层机制(控制器注入、参数获取等) |
快速实现 vs 深度理解 |
视图解析机制 |
ModelAndView对象传递→视图解析器配置→JSP页面渲染 |
配置文件路径设置要点 |
框架开发理念 |
约定优于配置原则在请求映射中的体现 |
注解驱动 vs XML配置 |
6.SpringMVC快速入门(2)
知识点 |
核心内容 |
重点 |
Spring MVC项目创建 |
创建外部工程、配置Tomcat、导入Spring MVC开发所需的JAR包(包括Spring基础JAR包和spring-web、spring-webmvc) |
JAR包依赖管理(需区分基础Spring包和MVC专用包) |
Spring配置文件 |
创建applicationContext-mvc.xml文件,用于配置Spring容器和Bean注入 |
配置文件命名和路径(需放在src目录下) |
前端控制器配置 |
在web.xml中配置DispatcherServlet,指定URL映射(/)和Spring配置文件路径(contextConfigLocation) |
DispatcherServlet的作用(处理所有用户请求,支持REST风格URL) |
项目结构规范 |
WEB-INF/lib目录存放依赖JAR包,确保DispatcherServlet在项目启动时自动加载 |
目录层级错误(避免将lib放在非WEB-INF目录) |
REST风格支持 |
通过/配置实现RESTful URL请求处理 |
与传统Servlet路径配置的区别 |
7.SpringMVC快速入门(3)
知识点 |
核心内容 |
重点 |
Spring MVC控制器创建 |
通过@Controller注解标识类,无需实现接口或继承类 |
@Controller与原生Servlet的区别 |
请求映射配置 |
使用@RequestMapping(value="/login")为方法配置URL映射 |
URL路径拼接规则(工程路径+方法路径) |
视图解析器机制 |
返回字符串(如"login_ok")由InternalResourceViewResolver解析为JSP页面 |
返回字符串必须与JSP文件名严格匹配 |
登录页面开发 |
JSP页面放置于web目录,表单action属性暂留空 |
action路径与控制器方法的映射关系 |
注解式开发优势 |
对比原生Servlet需配置web.xml,Spring MVC通过注解简化流程 |
@RequestMapping替代URL-Pattern配置 |
8.SpringMVC快速入门(4)
知识点 |
核心内容 |
重点 |
Spring MVC配置 |
配置application-context-mvc.xml文件,包括自动扫描包和视图解析器 |
扫描包路径必须准确,否则@Controller不生效 |
自动扫描包配置 |
通过<context:component-scan>指定com.hsp.edu.web包,扫描@Controller等组件 |
未配置扫描包会导致控制器失效 |
视图解析器配置 |
配置InternalResourceViewResolver,设置prefix(路径前缀)和suffix(文件后缀) |
前缀需从web目录开始定位,后缀需与文件类型匹配 |
请求路径映射 |
login.jsp表单提交路径需不带斜杠,否则会从根路径查找导致404 |
带斜杠 vs 不带斜杠的路径解析差异 |
Tomcat热加载配置 |
配置Tomcat热部署,确保修改后自动生效 |
需检查application context路径是否正确 |
视图跳转逻辑 |
控制器返回字符串(如"loginOK"),视图解析器拼接为完整路径(/WEB-INF/pages/loginOK.jsp) |
返回字符串需与JSP文件名一致 |
9.SpringMVC快速入门注意事项
知识点 |
核心内容 |
重点 |
Spring MVC 注解机制 |
@Controller 注解的作用:将普通 Java 类标记为控制器(Handler),接收用户请求并调用业务逻辑 |
不加注解时是普通类,加上后会被扫描为控制器 |
DispatcherServlet 配置文件加载规则 |
默认配置文件路径:WEB-INF/[servlet-name]-servlet.xml(如未显式配置 contextConfigLocation) |
优先级冲突:显式配置 vs 默认路径规则 |
请求映射注解简化 |
@RequestMapping 的 value 属性可省略(如 @RequestMapping("/login") 简化为 @RequestMapping) |
隐式路径映射 vs 显式声明 |
Spring MVC 工作流程底层实现 |
通过自定义 Controller 注解和分发处理器模拟底层机制(后续课程实现) |
扫描机制:注解如何被识别并注册到容器 |
Web 层控制器的多重命名 |
Handler(处理器)与 Controller(控制器)术语差异,实际功能相同 |
命名约定差异(不同框架/文档) |
10.SpringMVC执行流程分析(1)
知识点 |
核心内容 |
重点 |
Spring MVC执行流程 |
1. 浏览器请求→前端控制器(DispatcherServlet); 2. 调用处理器映射器(HandlerMapping); 3. 返回处理器执行链(含拦截器+目标Handler); 4. 调用处理器适配器(HandlerAdapter); 5. 执行目标Handler(业务逻辑); 6. 返回ModelAndView; 7. 调用视图解析器(ViewResolver); 8. 视图渲染(数据填充)→响应浏览器 |
关键组件作用: - DispatcherServlet:中央调度; - HandlerMapping:URL映射; 易混淆点: - 处理器执行链 vs 处理器适配器; - ModelAndView结构(数据+视图名) |
前端控制器核心作用 |
统一接收请求,协调各组件(映射器、适配器、视图解析器) |
- 为什么需要DispatcherServlet?; - 与传统Servlet开发区别 |
处理器映射器(HandlerMapping) |
根据请求URL匹配对应的Handler(如@Controller方法) |
易混淆点: - 静态资源映射排除配置; - 默认实现类(如RequestMappingHandlerMapping) |
处理器适配器(HandlerAdapter) |
适配不同Handler类型(如基于注解的Controller) |
核心内容: - 为什么需要适配器模式?; - 常见适配器实现类 |
视图解析器(ViewResolver) |
解析逻辑视图名→物理视图(如JSP/Thymeleaf路径) |
- 配置前缀/后缀(如/WEB-INF/views/); - 前后端分离时无需视图解析 |
拦截器(Interceptor) |
处理器执行链中包含的预处理/后处理逻辑(如权限校验) |
易混淆点: - 拦截器 vs 过滤器(Filter); - 执行顺序(preHandle→postHandle) |
源码调试建议 |
需先掌握基础流程后再通过DispatcherServlet#doDispatch()方法逐步调试 |
难点: - 组件初始化时机(onRefresh()); - 责任链模式的应用 |
11.SpringMVC执行流程分析(2)
知识点 |
核心内容 |
重点 |
前端控制器 |
Spring MVC最核心部件,负责请求协调和分发 |
DispatcherServlet的作用机制 |
处理器映射器 |
通过URL找到目标handler的映射机制 |
HandlerMapping与HandlerExecutionChain的区别 |
处理器适配器 |
调用目标handler的中间层 |
为什么需要适配器而不是直接调用 |
ModelAndView |
封装处理结果数据和视图信息 |
数据绑定与视图解析的关系 |
视图解析器 |
将逻辑视图名解析为实际视图 |
JSP/FreeMarker/Thymeleaf等不同视图技术的处理差异 |
视图渲染 |
将模型数据填充到视图模板 |
前后端分离时是否需要进行服务端渲染 |
拦截器链 |
多个拦截器组成的处理链 |
与过滤器链(FilterChain)的异同点 |
自定义实现 |
手动实现核心分发控制器 |
DispatcherServlet的核心逻辑复现 |
注解机制 |
@Controller/@RequestMapping等注解处理 |
注解扫描与映射关系的建立过程 |
参数绑定 |
控制器方法获取请求参数的机制 |
各种参数类型(@RequestParam/@PathVariable等)的处理差异 |
12.RequestMapping(1)
知识点 |
核心内容 |
重点 |
RequestMapping基本用法 |
在方法上添加@RequestMapping注解并指定URL值 |
注解必须加在控制器方法上 |
类与方法级联路径 |
类上的@RequestMapping会与方法上的路径拼接成完整URL |
路径拼接时不能加斜杠前缀 |
请求方法限定 |
通过method=RequestMethod.POST指定HTTP方法 |
默认支持GET/POST两种方法 |
常用请求方法类型 |
GET/POST/PUT/DELETE四种主要方法 |
需对应RESTful风格使用场景 |
工程路径处理 |
请求URL需包含localhost:8080/工程路径前缀 |
前端路径不能以斜杠开头 |
Handler与Controller区别 |
在Spring MVC中两者概念等价 |
命名习惯差异无功能区别 |
视图解析流程 |
通过返回"success"字符串匹配JSP页面 |
需提前配置视图解析器 |
开发调试技巧 |
使用Postman进行接口测试 |
需掌握工具基本使用方法 |
13.RequestMapping(2)
知识点 |
核心内容 |
重点 |
RequestMapping请求方式 |
可指定POST/GET/PUT/DELETE等HTTP方法 |
必须与控制器方法声明一致,否则报405错误 |
Spring MVC默认支持 |
控制器默认支持GET和POST方法 |
不指定时两种方式均可调用 |
405错误分析 |
请求方式与后端指定方法不匹配时报错 |
典型错误信息:request method GET is not supported |
JSP修改验证 |
修改JSP请求方式无需重启服务 |
但Java代码变更需要重新发布项目 |
请求方式实验 |
通过修改JSP表单method属性验证GET/POST调用 |
未指定method时两种方式均可成功调用 |