Spring MVC 常用注解的使用
创始人
2024-03-19 13:06:03
0

@ResponseBody

  • 由于 Spring MVC 是基于 MVC 这个设计模式的,所以在不加上注解的情况下,页面和前端交互的时候返回的默认是一个视图 View,或者说静态页面,而实际上用的比较多的是将处理完的数据发送给前端,所以我们可以用这个注解修饰一个类,表明这个类中的所有方法返回的都是数据,而不是视图(静态页面)

@Controller

  • 在 Spring MVC 中, 该注解通常搭配 @ResponseBody 使用,能够在项目启动的时候加载当前类,标识这是个 SpringMVC Controller 对象

@RestController

  • 该注解是一个组合注解,@RestController = @Controller + @ResponseBody

@RequestMapping

  • 用于修饰类中的方法,可以处理请求地址映射,可以用来映射用户用于访问某个 url 的请求, 例如:
@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 注解,也是一样的效果

@RequestBody

  • 该注解通常加在参数前面,表示需要从请求中的 Body 中取出一个 JSON 对象。并且注解“修饰”的需要是一个实体类对象,举个🌰

首先我们需要有一个 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 格式

@RequestPart

  • 该注解用于接收前端上传的文件, 而接收该数据的类为 MultipartFile
  • @RequestPart(“name”) 中还有一个参数, 表示前端发送来的文件名。除此之外,如果需要保存文件,则需要使用 MultipartFile类对象中的 transferTo() 方法,方法的参数是一个 File 对象, 举个🌰
	@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

  • 使用方式: @CookieValue("CookieName")
  • 括号中是 Cookie 的名字, 能够将名字为 CookieName 的 Cookie, 对应的 value 值赋给该注解修饰的参数
    并且该注释中还可以添加第二个参数 required ,表示这个 Cookie 是否是必要的——没有这个 Cookie 就会抛出异常

举个🌰 ,有如下代码:取出名字为 “who” 的 Cookie,然后 将这个Cookie对应的值赋给 value

	@RequestMapping("/cookietest")public String cookieTest(@CookieValue(value = "who", required = false)String value) {return value;}

在访问这个地址之前,我们先自定义一个 Cookie:name = “who”, value = “pig”
在这里插入图片描述
然后再访问:👇

在这里插入图片描述

如上,就可以正确得到 Cookie 的值了

@SessionAttribute

  • 使用方式:@SessionAttribute(“keyName”)
  • 该注解首先会尝试获取当前和用户的对话,如果能获取到会话,就会在会话中以 “keyName” 作为 key 值获取对应的 value 值。该注解中还可以添加第二个参数(同上),required,表示是否「是必要的」,如果Session中缺少指定的值,则会抛出异常

举个🌰测试一下,首先我们先使用常规方法 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 赋值给注解修饰的变量

在这里插入图片描述

@RequestParam

  • 将前端发送的参数在后端进行重命名
  • 用法:@RequestParam(“oriName”) 将前端名字为 oriName 的参数赋值给该注解修饰的变量,同时还有一个 required 参数,如果required = true 表示请求的路径中一定包含这个参数

举个🌰,如下代码:

    @RequestMapping("rename")public String rename(@RequestParam(value = "p", required = false)String place) {return place;}

如果请求路径为:
在这里插入图片描述
那么后端接受到数据后就会将 p 对应的 value 值赋值给 place,如下
在这里插入图片描述

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...