Lazy loaded image
SpringMVC
🧳SpringMVC
Words 1346Read Time 4 min
2025-4-16
2025-4-18
type
status
date
slug
summary
tags
category
icon
password

1.@RestController

@RestController = @Controller+@ResponseBody
其中@ResponseBody是只相应数据,不跳转页面

2.@RequestMapping

 
路径位置通配符:多个都能匹配上,那就精确优先 *:匹配任意多个字符(0~N) **:匹配任意多层路径 ?:匹配任意单个字符(1) 精确程度:完全匹配>?>*>**
精确路径必须全局唯一

3.@RequestMapping注解细节

3.1请求方式:method

GET POST DELETE HEAD PUT OPTIONS PATCH TRACE

3.2请求参数:params

请求参数:params={"username","age"} 1)、username: 表示请求必须包含username参数 2)、age=18: 表示请求参数中必须包含age=18的参数 3)、gender!=1: 表示请求参数中不能包含gender=1的参数

3.3请求头:headers

请求头:headers={"haha"} haha:表示请求中必须包含名为haha的请求头

3.4请求内容类型:consumes

请求内容类型:consumes={"application/json"};消费什么数据: application/json:表示浏览器必须携带json格式的数据

3.5响应内容类型:produces

响应内容类型:produces={"text/plain;charset=utf-8"};生产什么数据;

4.请求处理

4.1实验一:使用普通变量,收集请求参数

请求参数username=zhangsan&password=12345&cellphone=12345456&agreement=on
要求:变量名和参数名保持一致 1、没有携带:包装类型自动封装为null,基本类型封装为默认值 2、携带、自动封装

4.2实验二:使用@RequestParam,逐一封装多个参数

username=zhangsan&password=123456&cellphone=1234&agreement=0n @RequestParam::取出某个参数的值,默认一定要携带参数。无论请求参数带到了请求体中还是url?后面,他们都是请求参数,都可以直接用@RequestParam或者同一个变量名获取到 required=false:非必须携带; defaultValue="123456",默认值,参数可以不带。

4.3实验三:使用POJO,统一封装多个参数

如果目标方法参数是一个pojo;SpringMVC会自动把请求参数和pojo属性进行匹配: 效果: 1、pojo的所有属性值都是来自于请求参数 2、如果请求参数没带,封装为null;

4.4实验四:使用@RequestHeader获取请求头数据

4.5实验五:使用@CookieValue获取Cookie数据

4.6实验6:使用POJO,级联封装复杂对象

4.7使用@RequestBody,封装JSON对象

@RequestBody Person person 1、拿到请求体中的json字符串 2、把json字符串转为person对象

4.8实验8:使用@RequestPart/@RequestParam,封装文件,测试文件上传

文件上传: @RequestParam取出文件项,封装为MultipartFile,就可以拿到文件内容

4.9.实验9:使用HttpEntity,封装请求原始数据

HttpEntity:封装请求头、请求体;把整个请求拿过来 泛型;<String>:请求体类型; 可以自动转化

4.10.实验10:使用原生Servlet API,获取原生请求对象

5.响应处理

5.1实验1:返回json数据

5.2实验2:文件下载测试

注意点:
//1.文件名中文会乱码问题 String encode = URLEncoder.encode("美女.jpg", "utf-8"); //2.文件太大会内存溢出 InputStreamResource inputStreamResource = new InputStreamResource(fileInputStream);
 

5.3实验3:使用Thymeleaf模版引擎,实现服务端渲染

了解即可,因为使用Thymeleaf模版引擎其实就不是前后端分离开发,是前后端不分离开发,已经过时。
上一篇
Spring - Transaction
下一篇
今天成功部署NotionNext个人博客

Comments
Loading...