依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.3.1</version>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
<version>3.0.12.RELEASE</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
web.xml 和 SpringMVC配置文件
@RequestMapping
(1)标识在类上:设置请求路径的初始信息
表示在方法上:设置请求路径的具体信息
(2)value属性是一个字符串类型的数组,表示该请求映射能够匹配多个请求地址所对应的请求
(3)method属性
(4)处理特定请求的控制器方法
(5)params
@RequestMapping注解的params属性通过请求的请求参数匹配请求映射
@RequestMapping注解的params属性是一个字符串类型的数组,可以通过四种表达式设置请求参数 和请求映射的匹配关系
"param":要求请求映射所匹配的请求必须携带param请求参数
"!param":要求请求映射所匹配的请求必须不能携带param请求参数
"param=value":要求请求映射所匹配的请求必须携带param请求参数且param=value "param!=value":要求请求映射所匹配的请求必须携带param请求参数但是param!=value
(6)headers 类似于params
(7)ant 风格路径
(8)路径占位符
获取请求参数
(1)servlet-api
在controller的请求映射方法中加入形参 HttpServletRequest (需要servlet-api依赖)
DispatcherServlet 会传入 request ,通过 request.getParameter 获取请求参数
(2)形参设置与请求参数名一致的参数名,DispatcherServlet会将请求参数传给对应形参
(3)@RequestParam
根据请求参数名指定请求参数与形参对应
(4)通过 POJO
浏览器传输的请求参数的参数名和实体类中的属性名一致,那么请求参数就会为此属性赋值
@RequestHeader 和 @CookieValue
类似于@RequestParam
请求参数乱码问题
web.xml 配置编码过滤器
请求域共享参数
(1)servlet-api 请求映射方法加形参 HttpServletRequest request
(2)ModelAndView
(3)Model
(4)ModelMap
(5)Map
会话域、应用域共享参数
View
(1)ThymeleafView 渲染
(2)InternalResourceView 转发
(3)RedirectView 重定向
视图控制器 view-controller
单纯跳转,不经过thymeleaf渲染,与注解相同时用注解的请求映射??
静态资源处理
RESTful
GET 获取、POST 新建、PUT 更新、DELETE 删除
浏览器只支持发送 get 和 post 方式的请求
HiddenHttpMethodFilter 可以将 POST 请求转换为 DELETE 或 PUT 请求