当前位置: 首页 > news >正文

学习日记-SpringMVC-day48-9.2

知识点:

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

http://www.xdnf.cn/news/1430353.html

相关文章:

  • WPF应用程序资源和样式的使用示例
  • 洗衣店小程序的设计与实现
  • 深度学习篇---DenseNet网络结构
  • gitlab中回退代码,CI / CD 联系运维同事处理
  • VR森林经营模拟体验带动旅游经济发展
  • Time-MOE 音频序列分类任务
  • 【C++框架#2】gflags 和 gtest 安装使用
  • Redis 的跳跃表:像商场多层导航系统一样的有序结构
  • 疯狂星期四文案网第58天运营日记
  • 大模型微调数据准备全指南:清洗、标注与高质量训练集构造实战
  • 科研界“外挂”诞生了:科学多模态模型Intern-S1-mini开源
  • 我的项目我做主:Focalboard+cpolar让团队协作摆脱平台依赖
  • 大数据毕业设计选题推荐-基于大数据的电脑硬件数据分析系统-Hadoop-Spark-数据可视化-BigData
  • 临时邮箱地址获取服务器邮件工作流程与实现
  • playwright+python 实现图片对比
  • 【代码里的英雄传】Dubbo 的一生:一位分布式勇士的传奇旅程
  • 依托深兰科技AI技术生态,深兰教育携手沪上高校企业启动就业科创营
  • 高性能接口实现方案
  • 【微服务】-Gson反序列化泛型类型踩坑指南:如何正确处理Result<T>类型
  • MTK Linux DRM分析(三十)- MTK mtk_dsi.c(Part.2)
  • AI零售创业公司:零眸智能
  • PHP操作LibreOffice将替换变量后的word文件转换为PDF文件
  • ffmpeg 安装
  • C#基础(⑤ProcessStartInfo类和Process类)
  • Centos10虚拟机安装Zabbix
  • 面试tips--MySQLRedis--Redis 有序集合用跳表不用B+树 MySQL用B+树作为存储引擎不用跳表:原因如下
  • 卫朋:基于IPD思维的产品规划逻辑
  • Android Binder 驱动 - Media 服务启动流程
  • 三格电子CAN总线通信原理及在消防领域中的应用
  • 第三章:生活重构:当程序员不再只是“码农“