千家信息网

SpringMVC常用注解功能及属性是怎样的

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇文章给大家分享的是有关SpringMVC常用注解功能及属性是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.@Request
千家信息网最后更新 2026年11月03日SpringMVC常用注解功能及属性是怎样的

本篇文章给大家分享的是有关SpringMVC常用注解功能及属性是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

1.@RequestMapping注解

1.1@RequestMapping注解的功能

从注解名称上我们可以看到,@RequestMapping注解的作用就是将请求和处理请求的控制器方法关联起来,建立映射关系。

SpringMVC 接收到指定的请求,就会来找到在映射关系中对应的控制器方法来处理这个请求。

1.2@RequestMapping注解的位置

@RequestMapping标识一个类:设置映射请求的请求路径的初始信息

@RequestMapping标识一个方法:设置映射请求请求路径的具体信息

@Controller@RequestMapping("/test")public class RequestMappingController {        //此时请求映射所映射的请求的请求路径为:/test/testRequestMapping    @RequestMapping("/testRequestMapping")    public String testRequestMapping(){        return "success";    }}

1.3@RequestMapping注解的value属性

@RequestMapping注解的value属性通过请求的请求地址匹配请求映射

@RequestMapping注解的value属性是一个字符串类型的数组,表示该请求映射能够匹配多个请求地址所对应的请求

@RequestMapping注解的value属性必须设置,至少通过请求地址匹配请求映射

测试@RequestMapping的value属性-->/testRequestMapping
测试@RequestMapping的value属性-->/test
@RequestMapping(        value = {"/testRequestMapping", "/test"})public String testRequestMapping(){    return "success";}

1.4@RequestMapping注解的method属性

@RequestMapping注解的method属性通过请求的请求方式(get或post)匹配请求映射

@RequestMapping注解的method属性是一个RequestMethod类型的数组,表示该请求映射能够匹配多种请求方式的请求

若当前请求的请求地址满足请求映射的value属性,但是请求方式不满足method属性,则浏览器报错

405:Request method 'POST' not supported

测试@RequestMapping的value属性-->/test
@RequestMapping(        value = {"/testRequestMapping", "/test"},        method = {RequestMethod.GET, RequestMethod.POST})public String testRequestMapping(){    return "success";}

注意:

(1)对于处理指定请求方式的控制器方法,SpringMVC中提供了@RequestMapping的派生注解:

处理get请求的映射->@GetMapping

处理post请求的映射->@PostMapping

处理put请求的映射->@PutMapping

处理delete请求的映射->@DeleteMapping

(2)常用的请求方式有get,post,put,delete

但是目前浏览器只支持get和post,若在form表单提交时,为method设置了其他请求方式的字符串(put或delete),则按照默认的请求方式get处理。

若要发送put和delete请求,则需要通过spring提供的过滤器HiddenHttpMethodFilter。

1.5@RequestMapping注解的params属性(了解)

@RequestMapping注解的params属性通过请求的请求参数匹配请求映射

@RequestMapping注解的params属性是一个字符串类型的数组,可以通过四种表达式设置请求参数和请求映射的匹配关系

"param":要求请求映射所匹配的请求必须携带param请求参数

"!param":要求请求映射所匹配的请求必须不能携带param请求参数

"param=value":要求请求映射所匹配的请求必须携带param请求参数且param=value

"param!=value":要求请求映射所匹配的请求必须携带param请求参数但是param!=value

测试@RequestMapping的params属性-->/test
@RequestMapping(        value = {"/testRequestMapping", "/test"}        ,method = {RequestMethod.GET, RequestMethod.POST}        ,params = {"username","password!=123456"})public String testRequestMapping(){    return "success";}

注意:

若当前请求满足@RequestMapping注解的value和method属性,但是不满足params属性,此时页面会报错

400:Parameter conditions "username, password!=123456" not met for actual request parameters: username={admin}, password={123456}

1.6@RequestMapping注解的headers属性(了解)

@RequestMapping注解的headers属性通过请求的请求头信息匹配请求映射

@RequestMapping注解的headers属性是一个字符串类型的数组,可以通过四种表达式设置请求头信息和请求映射的匹配关系

"header":要求请求映射所匹配的请求必须携带header请求头信息

"!header":要求请求映射所匹配的请求必须不能携带header请求头信息

"header=value":要求请求映射所匹配的请求必须携带header请求头信息且header=value

"header!=value":要求请求映射所匹配的请求必须携带header请求头信息且header!=value

注意:

若当前请求满足@RequestMapping注解的value和method属性,但是不满足headers属性,此时页面显示404错误,即资源未找到。

1.7SpringMVC支持路径中的占位符(@PathVariable)(重点)

原始方式:/deleteUser?id=1

rest方式:/deleteUser/1

SpringMVC路径中的占位符常用于RESTful风格中,当请求路径中将某些数据通过路径的方式传输到服务器中,就可以在相应的@RequestMapping注解的value属性中通过占位符{xxx}表示传输的数据,在通过==@PathVariable==注解,将占位符所表示的数据赋值给控制器方法的形参

测试路径中的占位符-->/testRest
@RequestMapping("/testRest/{id}/{username}")public String testRest(@PathVariable("id") String id, @PathVariable("username") String username){    System.out.println("id:"+id+",username:"+username);    return "success";}//最终输出的内容为-->id:1,username:admin

2.SpringMVC获取请求参数

2.1通过ServletAPI获取(了解)

将HttpServletReques作为控制器方法的形参,此时HttpServletRequest类型的参数表示封装了当前请求的请求报文的对象

@RequestMapping("/testParam")public String testParam(HttpServletRequest request){    String username = request.getParameter("username");    String password = request.getParameter("password");    System.out.println("username:"+username+",password:"+password);    return "success";}

2.2通过控制器方法的形参获取请求参数

在控制器方法的形参位置,设置和请求参数同名的形参,当浏览器发送请求,匹配到请求映射时,在DispatcherServlet中就会将请求参数赋值给相应的形参

测试获取请求参数-->/testParam
@RequestMapping("/testParam")public String testParam(String username, String password){    System.out.println("username:"+username+",password:"+password);    return "success";}

注:

若请求所传输的请求参数中有多个同名的请求参数,此时可以在控制器方法的形参中设置字符串数组或者字符串类型的形参接收此请求参数

若使用字符串数组类型的形参,此参数的数组中包含了每一个数据

若使用字符串类型的形参,此参数的值为每个数据中间使用逗号拼接的结果

2.3@RequestParam

@RequestParam是将请求参数和控制器方法的形参创建映射关系

@RequestParam注解一共有三个属性:

value:指定为形参赋值的请求参数的参数名

required:设置是否必须传输此请求参数,默认值为true

若设置为true时,则当前请求必须传输value所指定的请求参数,若没有传输该请求参数,且没有设置defaultValue属性,则页面报错

400:Required String parameter 'xxx' is not present;

若设置为false,则当前请求不是必须传输value所指定的请求参数,若没有传输,则注解所标识的形参的值为null

defaultValue:不管required属性值为true或false,当value所指定的请求参数没有传输或传输的值为""时,则使用默认值为形参赋值

2.4@RequestHeader

@RequestHeader是将请求头信息和控制器方法的形参创建映射关系

@RequestHeader注解一共有三个属性:value、required、defaultValue,用法同@RequestParam

2.5@CookieValue

@CookieValue是将**cookie数据**和控制器方法的形参创建映射关系

@CookieValue注解一共有三个属性:value、required、defaultValue,用法同@RequestParam

2.6通过POJO获取请求参数

可以在控制器方法的形参位置设置一个实体类类型的形参,此时若浏览器传输的请求参数的参数名和实体类中的属性名一致,那么请求参数就会为此属性赋值

用户名:
密码:
性别:男女
年龄:
/.// 邮箱:
@RequestMapping("/testpojo")public String testPOJO(User user){    System.out.println(user);    return "success";}//最终结果-->User{id=null, username='张三', password='123', age=23, sex='男', email='123@qq.com'}

3.域对象共享数据

3.1使用ServletAPI向request域对象共享数据(了解)

@RequestMapping("/testServletAPI")public String testServletAPI(HttpServletRequest request){    request.setAttribute("testScope", "hello,servletAPI");    return "success";}

3.2使用ModelAndView向request域对象共享数据

ModelAndView有Model和View的功能:

Model主要用于向请求域共享数据

View主要用于设置视图,实现页面跳转

@RequestMapping("/testModelAndView")public ModelAndView testModelAndView(){    /**     * ModelAndView有Model和View的功能     * Model主要用于向请求域共享数据     * View主要用于设置视图,实现页面跳转     */    ModelAndView mav = new ModelAndView();    //向请求域共享数据    mav.addObject("testScope", "hello,ModelAndView");    //设置视图,实现页面跳转    mav.setViewName("success");    return mav;}

3.3使用Model向request域对象共享数据

@RequestMapping("/testModel")public String testModel(Model model){    model.addAttribute("testScope", "hello,Model");    return "success";}

3.4使用map向request域对象共享数据

@RequestMapping("/testMap")public String testMap(Map map){    map.put("testScope", "hello,Map");    return "success";}

3.5使用ModelMap向request域对象共享数据

@RequestMapping("/testModelMap")public String testModelMap(ModelMap modelMap){    modelMap.addAttribute("testScope", "hello,ModelMap");    return "success";}

3.6Model、ModelMap、Map的关系

Model、ModelMap、Map类型的参数其实本质上都是 BindingAwareModelMap 类型的

public interface Model{}public class ModelMap extends LinkedHashMap {}public class ExtendedModelMap extends ModelMap implements Model {}public class BindingAwareModelMap extends ExtendedModelMap {}

3.7向session域共享数据

@RequestMapping("/testSession")public String testSession(HttpSession session){    session.setAttribute("testSessionScope", "hello,session");    return "success";}

3.8向application域共享数据

@RequestMapping("/testApplication")public String testApplication(HttpSession session){        ServletContext application = session.getServletContext();    application.setAttribute("testApplicationScope", "hello,application");    return "success";}

4.HttpMessageConverter

HttpMessageConverter:报文信息转换器,将请求报文转换为Java对象,或将Java对象转换为响应报文

HttpMessageConverter提供了两个注解和两个类型:@RequestBody,@ResponseBody,RequestEntity,ResponseEntity

4.1@RequestBody

@RequestBody可以获取请求体,需要在控制器方法设置一个形参,使用@RequestBody进行标识,当前请求的请求体就会为当前注解所标识的形参赋值

用户名:
密码:
@RequestMapping("/testRequestBody")public String testRequestBody(@RequestBody String requestBody){    System.out.println("requestBody:"+requestBody);    return "success";}/*输出结果:requestBody:username=admin&password=123456*/

4.2RequestEntity

RequestEntity封装请求报文的一种类型,需要在控制器方法的形参中设置该类型的形参,当前请求的请求报文就会赋值给该形参,可以通过getHeaders()获取请求头信息,通过getBody()获取请求体信息

@RequestMapping("/testRequestEntity")public String testRequestEntity(RequestEntity requestEntity){    System.out.println("requestHeader:"+requestEntity.getHeaders());    System.out.println("requestBody:"+requestEntity.getBody());    return "success";}

输出结果:

requestHeader:[host:"localhost:8080", connection:"keep-alive", content-length:"27", cache-control:"max-age=0", sec-ch-ua:"" Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90"", sec-ch-ua-mobile:"?0", upgrade-insecure-requests:"1", origin:"http://localhost:8080", user-agent:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36"]requestBody:username=admin&password=123

4.3@ResponseBody

@ResponseBody用于标识一个控制器方法,可以将该方法的返回值直接作为响应报文的响应体响应到浏览器

@RequestMapping("/testResponseBody")@ResponseBodypublic String testResponseBody(){    return "success";}

结果:浏览器页面显示success

4.4@RestController

@RestController注解是springMVC提供的一个复合注解,标识在控制器的类上,就相当于为类添加了@Controller注解,并且为其中的每个方法添加了@ResponseBody注解

4.5ResponseEntity

ResponseEntity用于控制器方法的返回值类型,该控制器方法的返回值就是响应到浏览器的响应报文

以上就是SpringMVC常用注解功能及属性是怎样的,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

注解 属性 参数 形参 方法 控制器 控制 数据 类型 信息 传输 方式 对象 字符 字符串 报文 路径 处理 数组 标识 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司简介 互联网核心科技是什么 互联网为科技 金融科技创新监管互联网金融 互联网科技小贷 互联网科技革命 西安互联网科技公司 互联网科技宣传片 佩信高科技互联网 互联网科技公司需要的职位 现代科技和互联网有关系吗 阿里巴巴算科技企业还是互联网 互联网时代科技改变生活 受益于互联网科技的高速发展 昊天互联网科技有限公司 互联网科技公司营业执照怎么办理 互联网企业科技类企业如何做账 艺电能源互联网科技有限公司招聘 河南商务圈互联网科技有限公司 每日互联网科技新闻 喔噻互联网科技有限公司 电子科技大学互联网 互联网科技创新企业排名 青海省互联网新科技 互联网新科技动漫ppt素材 中和天地互联网科技有限公司 互联网方面的科技前沿 互联网硬科技公司 陕西九四连强互联网科技有限公司 中国科技和美国互联网
0