Lazy loaded image
技术分享
SpringMVC
00 min
2021-9-18
2024-11-25
type
status
date
slug
summary
tags
category
icon
password

一. SpringMVC

1. 相关概念

mvc 模式
notion image
springmvc 原理
notion image
  1. 用户发送请求到前端控制器,即 DispatcherServlet
  1. DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器
  1. HandlerMapping 将处理器对象及处理器拦截器返回给 DispatcherServlet
  1. DispatcherServlet 调用 HandlerAdapter 处理器适配器
  1. HandlerAdapter 经过适配调用具体的处理器
  1. Controller 执行完成返回 ModelAndView
  1. HandlerAdapter 将 ModelAndView 返回给 DispatcherServlet
  1. DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器
  1. ViewReslover 解析后返回具体 View
  1. DispatcherServlet 根据 View 进行渲染视图
  1. DispatcherServlet 响应用户
springmvc 九大组件
关于 Handler: @RequestMapping 标注的所有方法都可以看成是一个Handler,只要可以实际处理请求就可以是Handler

2. DispatcherServlet(前端控制器)

DispatcherServlet 拦截所有 web 请求并进行匹配、转发、数据处理
在 web.xml 中配置 DispatcherServlet 等,完整版 web.xml
加载指定的初始化配置文件 dispatcher-servlet.xml

二. Springboot 中的 SpringMVC

1. @RequestMapping 注解

源码:
  • method:指定HTTP协议中的请求方式,如GETPOST(PUT、DELETE)等,指定后如果不按规定的请求方式请求会报错,不指定则接收任何方式的请求
<hr/>
  • params:请求时必须(不)包含指定的一个或多个参数以及对应参数值,否则报错
<hr/>
  • headers:请求时必须包含指定的header(请求头)中的值,否则报错
    • notion image
<hr/>
  • consumes:指定请求时的 Content-Type ,如 text/html
<hr/>
  • produces:指定响应的 Content-Type,请求头中的 Accept 中必须包含该类型才能返回
<hr/>
  • value:指定请求的实际地址
可搭配 ANT 风格实现 URL 的模糊匹配
通配符
说明
?
匹配任意单个字符
*
匹配0或多个任意字符
**
匹配0或多层目录

2. REST (REpresentational State Transfer)

核心思想:URL 用名词定位资源,用 HTTP动词 描述操作
  • GET:获取资源
  • POST:新建资源
  • PUT:更新资源
  • DELETE:删除资源
目的:
  • 看 url 就知道要什么
  • 看 http method 就知道干什么
  • 看 http status code 就知道结果如何

3. @RequestParam 和 @RequestBody(获取前端请求的数据)

源码:
  • value:请求参数名,即后台获取 .html 中设置的变量名(必须配置)
  • required:请求中必须包含该参数,默认为 true,如果没包含则会抛出异常(可选配置)
  • defaultValue:为获取的参数赋默认值,设置后无论是否配置了 required ,都自动设为 false(可选配置)
notion image
Thymeleaf(Springboot 推荐的视图解析器)
要使用 Thymeleaf 语法必须引入空间名称
notion image
IDEA 中通过 Thymeleaf 语法读取变量时爆红色波浪线问题
notion image
在 Thymeleaf 模板引擎下的error文件夹里可以定制错误信息面页
notion image

4. Model(回显数据)

常规绑定数据的方式,给handle方法传入Map、Model、ModelMap参数
  • Map:JDK提供的接口
  • Model:Spring提供的接口,最常用
  • ModelMap:Map接口下的一个类
三种方式最终都是实现了 BindingAwareModelMap
  • 使用SpringMVC的 ModelAndView 对象也可以给面页传递数据
以上四种方式,返回的数据都在 request域 中
@ModelAttribute 该注解已淘汰
上一篇
JVM-类加载机制
下一篇
Servlet、Filter、Listener