4-2 Spring MVC框架-01
Spring MVC框架-01
Ⅰ.接收客户端请求
1. 关于Spring MVC框架
- Spring MVC是基于Spring框架基础之上的
- 作用:
接收请求,响应结果,处理异常
- 主要解决了后端服务器接收客户端提交的请求,并给予响应的相关问题
2. 依赖项
- spring-webmvc
- javax.servlet
3. HTTP状态错误
状态 | 问题 |
---|---|
400 | 请求参数错误(地址栏?后边的参数或参数值) |
404 | 请求资源不存在(网址错了,请求问题...) |
405 | 请求方式错误(post/get) |
406 | Not acceptable“无法接受” (的格式) |
500 | 服务器出现异常EXception看服务器(IDEA) |
4.注意事项
- 组件扫描必须配置在Spring MVC的配置类中
Ⅱ.@RequestMapping注解
1.主要作用
- 是配置请求路径与处理请求的方法的映射关系
2.相关配置参数
– method: | 请求方式 |
---|---|
– headers: | 请求头 |
– params: | 请求参数 |
– consumes: | 请求文档类型 |
– produces: | 响应文档类型 |
3.相关注解
– @GetMapping
– @PostMapping
– @PutMapping (不常用)
– @DeleteMapping (不常用)
※重要小结
精简小结:
作用: 配置请求路径
-
类RequestMapping 配置
produce"text/xxx;charset=utf-8"
-
方法GetMapping/PostMapping限制请求路径的解析
详细小结:
[★★★★★] 在开发实践中,通常:
– 在类上使用@RequestMapping,配置请求路径,并配置produces以指定响应的文档类型
@Controller
@RequestMapping(value = "/user",produces = "text/html;charset=utf-8")
public class UserController (){}
– 在方法上使用@GetMapping、@PostMapping等限制了请求类型的注解,配置请求路径
Ⅲ.响应正文
1.相关注解
注解 | 问题 |
---|---|
@EnableWebMvc | 添加在Spring MVC配置类上的注解,当响应正文,且响应的是JSON格式的结果时,必须添加此注解,否则将导致406错误,另外,在Spring Boot项目中不需要手动添加(SpringMVC的增强兼容模式) |
@ResponseBody | 响应正文 |
@RestController | 使用了@Controller和@ResponseBody作为元注解,具有这2个注解的效果 |
@RequestMapping | 通常添加在类上,用于配置请求路径的前缀部分,也使用produces属性配置此控制器类中所有处理请求的方法响应时的文档类型,例如在类上配置为@RequestMapping(value="user", produces="application/json; charset=utf-8") |
@GetMapping | 是将请求类型限制为GET的@RequestMapping,通常添加在处理请求的方法上,用于配置此方法映射的请求路径 |
@PostMapping | 参考@GetMapping |
※重要小结
响应json格式的正文
- – 添加jackson-databind依赖
- – 在Spring MVC配置类上添加@EnableWebMvc注解
- – 自定义类,作为处理请求的方法的返回值类型
- – 类的属性必须添加Setter & Getter
- – 使得处理请求的方法是响应正文的
Ⅳ.接收请求参数
1.请求参数注解
- @RequestParam注解
- 配置name属性 :
- 配置required属性: 是否要求客户端必须提交此请求参数,
- 配置defaultValue属性: 配置此请求参数的默认值,
2.关于数据封装
-
一个参数直接加到方法里边
-
多个参数进行数据封装
-
封装的参数必须写Setter/Getter方法(很多框架json/spring mvc会自动调用)-
※重要小结
● [★★★★★] 你可以将请求参数一个个的声明为处理请求方法的参数,也可以将多个参数封装到一个自定义类中,使用自定义类作为处理请求的方法的参数,Spring MVC框架会自动接收客户端提交的请求参数,并用于调用你编写的处理请求的方法
● [★★★★★] 在大部分情况下,推荐使用将参数封装到自定义类的做法
● [★★★★★] 你需要保证非String类型的参数是Spring框架可以成功自动转换类型的,或者,对转换失败有进一步的处理,或可以接受转换失败带来的后果