SpringMVC中的注解
一、@RequestMapping
作用:
用来设置处理器中方法的访问地址
出现位置:
用在方法和类上面
- 类:相当于一个模块的访问地址(基准路径)
-
- path / value :指定访问地址 , 如 path = "/save"
- method: 限制请求的方法,如 method = RequestMethod.GET。如果被限制会出现405错误
- param: 限制提交的参数, 如 params = {"id","name"} 必须有这两个参数的名字,否则会出现400错误;params = {"id=1","name=newboy"} 不但要有这些参数,而且值还有限制; params = {"id!=1"} id不等于1的值都可以
- consumers:属性用于指定处理请求的提交内容类型(Content-Type)如 @RequestMapping(value = "toUser",consumes = "application/json")。
- produces 属性用于指定返回的内容类型,返回的内容类型必须是 request 请求头(Accept)中所包含的类型。如 @RequestMapping(value = "toUser",produces = "application/json") 除此之外,produces 属性还可以指定返回值的编码。如 @RequestMapping(value = "toUser",produces = "application/json,charset=utf-8"),表示返回 utf-8 编码。
注:多个属性之间使用逗号隔开;在整个 Web 项目中,@RequestMapping 映射的请求信息必须保证全局唯一。
name/value : 指定提交的参数名
required : 默认是true,表示这个参数必须要有,如果没有提供报400 , 避免报错可设置为: required = false
defaultValue: 如果没有指定值,默认是NULL,可以给它指定一个默认值 ,如 defaultValue = "daniel"
注: 控制器方法中参数可以直接封装前端传送过来的简单类型数据(8种基本类型+字符串),但前提条件是:
-
方法的参数名与请求的参数名要相同 (不同就要加@RequestParam 注解), get/post请求都可
-
尽量使用包装类可以减少错误的发生
-
简单类型的集合(List/Map)不能直接绑定,必须要在方法形参的前面加上@RequestParam注解
Tip:通过post方式提交的表单参数可以直接使用自定义的Java对象接受。但如果前端发送的是 字符串,则需要使用如下@RequestBody注解
三、@RequestBody
字符串 转换为 java对象
Tip:
如果参数是放在请求体中,application/json传入后台的话,那么后台要用@RequestBody才能接收到;
如果不是放在请求体中的话,那么后台接收前台传过来的参数时,要用@RequestParam来接收,或
则形参前 什么也不写也能接收。
注: 前端不能使用 get 方法从浏览器里发送 body. 但后端应用通常可以发送. 比如 node.js 或 postman 。
四、@ResponseBody
作用:
放在方法上或方法返回值前, 用于是把控制器方法的返回值转换为json字符串
属性:
produces : 用于指定返回的数据格式
Tip:方法的返回值可以是任何封装数据的对象:实体类,List集合, Map集合等
在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。
五、@RequestHeader
作用:用于获取请求头的值
如: @RequestHeader("Accept-Encoding") 把Request请求header部分的值绑定到方法的参数上
// Cookie : JSESSIONID=E8605223EFB14A7CE9D647DBB08030FB
Tip:@CookieValue("JSESSIONID") 可以直接把JSESSIONID的值绑定到方法参数上。
六、@PathVariable
作用:从路径上获取参数值,即使用RESTful操作资源
示例代码如下:
//地址栏变量名字与形参的名字不同的情况,需要指定name的名字
@RequestMapping("/hello/{uid}")
public String getDetails(@PathVariable(value="uid") String id){}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?