type
status
date
slug
summary
tags
category
icon
password
一. SpringMVC
1. 相关概念
mvc 模式
springmvc 原理
- 用户发送请求到前端控制器,即 DispatcherServlet
- DispatcherServlet 收到请求调用 HandlerMapping 处理器映射器
- HandlerMapping 将处理器对象及处理器拦截器返回给 DispatcherServlet
- DispatcherServlet 调用 HandlerAdapter 处理器适配器
- HandlerAdapter 经过适配调用具体的处理器
- Controller 执行完成返回 ModelAndView
- HandlerAdapter 将 ModelAndView 返回给 DispatcherServlet
- DispatcherServlet 将 ModelAndView 传给 ViewReslover 视图解析器
- ViewReslover 解析后返回具体 View
- DispatcherServlet 根据 View 进行渲染视图
- DispatcherServlet 响应用户
springmvc 九大组件
关于 Handler:
@RequestMapping 标注的所有方法都可以看成是一个Handler,只要可以实际处理请求就可以是Handler
2. DispatcherServlet(前端控制器)
DispatcherServlet 拦截所有 web 请求并进行匹配、转发、数据处理
在 web.xml 中配置 DispatcherServlet 等,完整版 web.xml
加载指定的初始化配置文件 dispatcher-servlet.xml
二. Springboot 中的 SpringMVC
1. @RequestMapping 注解
源码:
- method:指定HTTP协议中的请求方式,如GET、POST(PUT、DELETE)等,指定后如果不按规定的请求方式请求会报错,不指定则接收任何方式的请求
<hr/>
- params:请求时必须(不)包含指定的一个或多个参数以及对应参数值,否则报错
<hr/>
- headers:请求时必须包含指定的header(请求头)中的值,否则报错
<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(可选配置)
Thymeleaf(Springboot 推荐的视图解析器)
要使用 Thymeleaf 语法必须引入空间名称
IDEA 中通过 Thymeleaf 语法读取变量时爆红色波浪线问题
在 Thymeleaf 模板引擎下的error文件夹里可以定制错误信息面页
4. Model(回显数据)
常规绑定数据的方式,给handle方法传入Map、Model、ModelMap参数
- Map:JDK提供的接口
- Model:Spring提供的接口,最常用
- ModelMap:Map接口下的一个类
三种方式最终都是实现了 BindingAwareModelMap
- 使用SpringMVC的 ModelAndView 对象也可以给面页传递数据
以上四种方式,返回的数据都在 request域 中
- Author:风之旅人
- URL:https://www.hrmi.fun//article/spring-mvc
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!