SpringMVC中的常⽤注解
SpringMVC中的常⽤注解
SpringMVC中的常⽤注解
@Controller
@Controller注解标注是⼀个类是Web控制器,其和@Component注解等价,只不过在Web层使⽤,其便于区分类的作⽤。
@RequestMapping
@RequestMapping是Spring Web应⽤程序中最常被⽤到的注解之⼀。
在对SpringMVC进⾏配置的时候,需要指定请求与处理⽅法之间的映射关系,这时候就需要使⽤@Requ
estMapping注解。该注解可以在控制器类的级别和其⽅法级别上使⽤。
@RequestMapping注解能够处理的HTTP请求⽅法有: GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE 。
为了能够将⼀个请求映射到⼀个特定的HTTP⽅法,需要在@RequestMapping中使⽤method参数声
明HTTP请求所使⽤的⽅法类型。如下⽰例,在 TestController 中添加请求映射⽅法
返回类型:最常⽤的Controller 返回的类型()具体的返回的类型可以参考官⽅的⽂档:
String返回类型
有两种使⽤⽅式:
返回 URI 资源路径的字符串,可以使⽤ redirect:/服务路径 表⽰重定向到某个路径,
forward:/服务路径 表⽰转发到某个路径,如果前边不写默认就是转发。
那么两者的区别是什么呢?
1.从地址栏显⽰来说:
springmvc常用标签1)forword是服务器内部的重定向,服务器直接访问⽬标地址的 url⽹址,把⾥⾯的东西读取出来,但是客户端并不知道,因此⽤forward的话,客户端浏览器的⽹址是不会发⽣变化的。
2)redirect是服务器根据逻辑,发送⼀个状态码,告诉浏览器重新去请求那个地址,所以地址栏显⽰的是。
2。 从数据共享来说:
1)由于在整个定向的过程中⽤的是同⼀个request,因此forward会将request的信息带到被重定向的jsp或者servlet中使⽤。即可以共享数据
2)redirect不能共享
3.从运⽤的地⽅来说
1)forword ⼀般⽤于⽤户登录的时候,根据⾓⾊转发到相应的模块
2) redirect⼀般⽤于⽤户注销登录时返回主页⾯或者跳转到其他⽹站
4。 从效率来说:
1)forword效率⾼,⽽redirect效率低
5.从本质来说:
forword转发是服务器上的⾏为,⽽redirect重定向是客户端的⾏为
6.从请求的次数来说:
forword只有⼀次请求;⽽redirect有两次请求,
返回普通的Java类型
返回类型为Object,⼀般使⽤带Getter,Setter⽅法的模型类
结合@ResponseBody使⽤,表⽰将对象序列化后的数据放在响应体返回
在SpringBoot中默认响应的Content-Type为 application/json
⾮字符串对象会⾃动序列化为 json 字符串
@ResponseBody
表⽰将控制器⽅法的返回序列化作为响应体内容返回前端。
根据之前《控制器⽅法的返回》说明,使⽤@ResponseBody注解:
1.返回类型为String,表⽰响应Content-Type: text/plain,且响应体为控制器⽅法的字符串返回值
2.返回类型为普通Java类型,表⽰响应Content-Type: application/json,以返回对象序列化为json后
作为响应体。
3.@ResponseBody可以使⽤在类上,表⽰该类中所有⽅法都是默认以返回值作为响应体,也就是所
有⽅法都使⽤@ResponseBody。
注意:如果返回值为null,表⽰响应体内容为空
组合注解
可以使⽤组合注解来完成同时定义多个注解的效果,如:@RestController,@GetMapping,@PostMapping 说明该注解使⽤在类上,和使⽤两个注解@Controller,@ResponseBody在类上意思⼀样
@GetMapping即是:@RequestMapping(method = RequestMethod.GET)
@PostMapping即是:@RequestMapping(method = RequestMethod.POST)
@PathVariable
⼀般的 URI 服务路径都是固定的,SpringMVC提供了 restful 风格可以变化的 URI。{}是将服务路径 URI 中的部分定义为变量,之后在⽅法参数中获取该路径变量。
@RequestParam
当请求数据要绑定到某个简单对象时,可以使⽤@RequestParam。
URL 中的请求数据queryString请求头,Content-Type为表单默认提交的格式 application/x-www-form-urlencoded ,请求体中的数据
请求头,Content-Type为 multipart/form-data ,请求体中的数据。 form-data 可以提交⽂本
数据,也可以提交⼆进制⽂件。
以上简单对象包括:基本数据类型、包装类型、MultipartFile(接收⼆进制⽂件)
需要注意@RequestParam注解参数默认为 required=true ,如果不传该参数就会报错,需要指定
为: @RequestParam(required = false) 。
POJO(Plain Ordinary Java Object):简单的 java 对象,实际就是属性提供了Getter,Setter⽅法的
普通对象。
使⽤ java 对象和使⽤@RequestParam注解⾮常类似,只是有点细节不同:
@RequestParam是以⽅法参数变量名和传⼊的键对应,POJO对象作为⽅法参数时,是以POJO对
象中的属性名对应传⼊的键
@RequestParam默认必须传⼊该请求数据,⽽ POJO 对象是根据请求数据来填充属性,如果请求
数据没有,则属性就是默认值
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论