Springboot的Controller中常用注解
https://blog.csdn.net/weixin_43184769/article/details/83383341
@Controller和@RestController和@ResponseBody
@Controller
@Controller注解标注类的方法,return时会被视图处理器识别成静态文件的路径。默认为templates文件夹下。如
return "test/hello"
表示的是默认路径下的test文件夹中的名叫hello的文件,带上后缀名.html或btl等也可以识别。
@ResponseBody
@ResponseBody可以标注方法也可以标注类,当标注方法时表示该方法的返回值会被解析成json(字符串会不会被转换),直接写入HTTP Response Body中,视图处理器将不会将return的参数识别成路径。当它标注类时,类中所有方法的返回值都将直接返回值到页面,相当于给所有的类都加上@ResponseBody注解。
@RestController
@RestController是@Controller和@ResponseBody的结合体,只能注解类,return返回的值将被转换成json,字符串除外,直接写入HTTP相应体返回到页面中。
需要注意的是,只在类上注解@ResponseBody类中方法映射的URL并不能起作用,加上@Controller注解后才可以接受处理HTTP请求,同时加上 @RestController是@Controller和只写@ResponseBody是一样的效果
@RequestMapping
它可以注解类也可以注解方法,注解类时标注请求的路径,标注方法时表示将特定的URL映射到指定的方法。@RequestMapping中有多个属性来进一步匹配HTTP请求到方法:
-
value,请求的URL路径,支持URL模板,正则表达式。和Ant路径表达式。例如:
则/test/tom,/test/123等路径都会被匹配到Hello方法中来
加入正则表达式[a-z]表示匹配一位所有的小写字母。所以类似/test/a;/test/b等路径都会被映射到Hello方法中。
使用Ant路径表达式时。“ * ”单个星号表示匹配任意字符:/test/ *.html,/test/hello. *
" ** "用两个星号表示任意路径如图中的/**/hello。使用?匹配单个字符,如/test/?.html -
method,指定HTTP请求的方法,GET,POST,PUT,DELETE等,只有匹配才能调用。Spring提供了简化的写法:
@GetMapping
@PostMapping
@PutMapping等
所以
@RequestMapping(value = "/test/hello",method = RequestMethod.GET)和
@GetMapping("/test/hello")表示的意思是一样的
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- consumes,指定HTTP请求头中的Content-Type。
例如。设置Content-Type=application/json,则对应接收ajax请求。可以在ajax中设置contentType="application/json"确保数据类型。
参数相关注解
@PathVariable:
用于获取URL中的参数:一般{ }中的变量名与方法中的形参名一致(可以不加@PathVariable注解)
如果名称不一致则写成:否则不单单是获取不到参数,连方法都不执行!
@RequestParam
@RequestParam,用来处理Content-Type为application/x-www-form-urlencoded(默认类型如果不指定),使用value属性可以指定获取参数的key。
@RequestBody
@RequestBody 注解一般用来处理非Content-Type: application/x-www-form-urlencoded编码格式的数据,在GET请求中没有请求体所以一般不适用,在post请求中必须指定Content-Type后才能使用它,如ajax请求指定发送格式为application/json。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
2019-10-15 深入理解RocketMQ的消费者组、队列、Broker,Topic