1.web层 - 代替Servlet(接收请求、处理请求、做出响应)
2.作用
-
做出响应
-
页面跳转 - 返回字符串 - 默认转发
-
forward:/xxx/xxx
-
redirect:/xxx/xxx
-
-
页面跳转 - 返回ModelAndView
-
页面跳转 - 使用ServletAPI
-
响应数据 - 设置响应正文
-
response - 流
-
返回字符串 + @ResponseBody
-
-
响应数据 - 返回JSON
-
返回方法必须是复杂类型
-
@ResponseBody @RestController(=@Controller + @ResponseBody)
-
-
-
获取请求
-
获取基本类型参数
-
请求参数参数名和@Controller方法的参数名保持一致
-
@RequestParam
-
-
获取对象类型参数:请求参数参数名和对象属性名保持一致
-
获取JSON
-
JSON的key和对象属性名保持一致
-
对象要使用@RequestBody
-
-
-
统一异常处理
-
参数校验
-
拦截器 - 登陆验证
3.配置
-
lombok
-
spring web
4.注解
1) @Controller:放在类上,表示这是一个控制器类,实例化对象!
2) @RequestMapping("/test"):可以放在类和方法上,用来设置路径
-
方法的路径:类的路径 + 方法的路径
-
如果类没有路径,方法路径就是方法路径
-
方法如果希望被外界访问,必须设置路径
-
-
属性
-
value
-
指定类或方法的地址,可以配置多个值
-
@RequestMapping如果没有指定属性,则()中的值就是value给的
-
-
mathod
-
指定方法能够接收的请求方式
-
不指定就表示任何请求都能接收
-
-
3) @ResponseBody :将方法返回的数据作为响应体进行响应 - 将方法返回的数据作为响应内容(JSON字符串返回前端)发送给浏览器而不是页面跳转
如果方法返回的是对象,将数据转换成JSON发送给浏览器
4)@RestController:= 1+3,放在类上,表示控制器类,且类中方法都是JSON
5)限制地址接收方式
-
@GetMapping:限制只接收get请求
-
@PostMapping:限制只接收post请求
6)@RequestBody:将请求中的JSON转换为Java对象
@RequestParam(name="???"):参数绑定
7)@DeleteMapping
5.MVC运行流程![](https://i-blog.csdnimg.cn/direct/35ad31b0eaa74cc59244ee2ee989e2d2.png)
6.组件简介
-
前端控制器
-
处理器映射器
-
处理器适配器
-
处理器Controller
-
视图解析器
-
试图
7.转发和重定向
-
重定向
return "redirect:/jsp/success.jsp";
-
转发
return "forward:/jsp/success.jsp";
8.视图解析器配置
# 前缀
spring.mvc.view.prefix=/a/
# 后缀
spring.mvc.view.suffix=.html
9.获取请求
-
restful风格的API:url+请求方式
-
get 查询 /dept @GetMapping
-
post 新增 /dept @PostMapping
-
delete 删除 /dept @DeleteMapping
-
put 修改 /dept @PutMapping
-
-
获取Servlet相关API:写参数上(?????)
10.统一异常处理
---- 自定义异常处理器并使用
-
控制器内部异常处理 - 只能处理某个Controller自己的异常
-
全局异常处理
11.发送ajax请求
-
如果没有设置copntentType,contentType的默认值是ap
plication/x-www-fprm-urlencoded,这个时候ajax发送的不是JSON数据,而是模拟了form表单提交
-
如果ajax请求要发送JSON,contentType要设置为“application /json'charest=utf-8”,data中发送的数据要是JSON字符串
12.参数校验
-
引入依赖:如果
Springboot
版本大于2.3.x
,则需要手动引入依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>
-
参数校验未通过的统一异常处理
-
RequestBody和form表单参数校验:给实体类加上
@Validated
注解 -
requestParam
和PathVariable
参数校验:必须在Controller
类上标注@Validated
注解,并在参数上声明约束注解 -
参数校验 - 特殊情况:实体类参数中有对象属性,如何校验对象中的属性 - 在该属性上加@Valid注解
-
校验规则分组:?????????讲些啥??
13.热部署
-
热:无需重启就能让修改后的功能生效
-
配置:见教程
-
IDEA配置
-
SpringBoot配置
-