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运行流程
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配置