知识点:
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时两种方式均可成功调用 |