@RestController
public class Main {@RequestMapping("hello")public String getName() {return "hello MVC";}
}
这个注释是同时支持 Get 和 Post 请求的,如果想要设置仅限于 Get 和 Post,可以在 RequestMapping 中设置第二个参数 method
, 传入的是枚举类型RequestMethod
例如
@RestController
public class Main {@RequestMapping(value = "/hello", method = RequestMethod.GET)public String getName() {return "Spring MVC 常用注解的使用";}
}
如果想要该路由只能由 Get 请求或者 Post 请求触发,除了上述说的多加一个 method 参数以外,也可以使用 @GetMapping 和 @PostMapping 注解,也是一样的效果
首先我们需要有一个 Java 实体类来对应一个 JSON 对象,假设是一个 Student 实体类,有 name, age, sex
三个属性,然后向该路由发送 JSON 格式的数据:
@Data // 会为 Student 这个类加上 getter, setter, toString 等方法public static class Student {private String name;private int age;private String sex;}@RequestMapping("/json")public Student getJson(@RequestBody Student student) {return student;}
然后利用 Postman 发送 JSON 格式的请求, 如下
后端可以正常接收到 JSON 格式的数据,也可以返回给前端这个实体类对象,其会被自动转换回 JSON 格式
@RequestMapping("/download") // 假设前端上传的文件名为 photopublic String download(@RequestPart("photo")MultipartFile multipartFile) throws IOException {File file = new File("D:/beauty.jpg"); // 将这个文件放在路径: D:/beauty.jpg 上multipartFile.transferTo(file);return "下载文件完成";}
然后我们用 Postman 上传一个文件, 然后起名为 “photo” 发送给后端
并且 D 盘中也成功下载了这个文件
@CookieValue("CookieName")
举个🌰 ,有如下代码:取出名字为 “who” 的 Cookie,然后 将这个Cookie对应的值赋给 value
@RequestMapping("/cookietest")public String cookieTest(@CookieValue(value = "who", required = false)String value) {return value;}
在访问这个地址之前,我们先自定义一个 Cookie:name = “who”, value = “pig”
然后再访问:👇
如上,就可以正确得到 Cookie 的值了
举个🌰测试一下,首先我们先使用常规方法 HttpSessionRequest 对象来设置一下会话,增加一个["who", "pig"]
的键值对
@RequestMapping("setsession")public String setSessiont(HttpServletRequest req) {// 设置一下会话HttpSession session = req.getSession(true); // 设置为 True,如果不存在会话,那就创建一个会话if (session != null) { // 没有创建会话,那就设置一下属性session.setAttribute("who", "pig");}return "会话设置成功";}
然后再使用 @SessionAttribute 注解尝试获取:
@RequestMapping("sessiontest")public String sessionTest(@SessionAttribute("who")String value) {return value;}
然后当我们访问这个网页的时候, 就会带着 sessionid 去匹配相应的会话, 再在会话中查询以 “who” 为 key 的键值对, 再将 value 赋值给注解修饰的变量
required = true
表示请求的路径中一定包含这个参数举个🌰,如下代码:
@RequestMapping("rename")public String rename(@RequestParam(value = "p", required = false)String place) {return place;}
如果请求路径为:
那么后端接受到数据后就会将 p 对应的 value 值赋值给 place,如下