SpringMVC中的常用注解
Posted 保护眼睛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringMVC中的常用注解相关的知识,希望对你有一定的参考价值。
SpringMVC中的常用注解
SpringMVC中的常用注解
@Controller
@Controller注解标注是一个类是Web控制器,其和@Component注解等价,只不过在Web层使用,其便于区分类的作用。
@RequestMapping
@RequestMapping是Spring Web应用程序中最常被用到的注解之一。
在对SpringMVC进行配置的时候,需要指定请求与处理方法之间的映射关系,这时候就需要使用@RequestMapping注解。该注解可以在控制器类的级别和其方法级别上使用。
@RequestMapping注解能够处理的HTTP请求方法有: GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS, TRACE 。
为了能够将一个请求映射到一个特定的HTTP方法,需要在@RequestMapping中使用method参数声
明HTTP请求所使用的方法类型。如下示例,在 TestController 中添加请求映射方法
返回类型:最常用的Controller 返回的类型()具体的返回的类型可以参考官方的文档:官方链接
String返回类型
有两种使用方式:
返回 URI 资源路径的字符串,可以使用 redirect:/服务路径 表示重定向到某个路径,
forward:/服务路径 表示转发到某个路径,如果前边不写默认就是转发。
那么两者的区别是什么呢?👇
1.从地址栏显示来说:
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有两次请求,
7.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 对象是根据请求数据来填充属性,如果请求
数据没有,则属性就是默认值
POJO 对象同样可以直接获取 form-data 方式的数据,包括二进制文件
@RequestBody
当请求的数据类型Content-Type为 application/json 时,需要显示的使用@RequestBody注解。
@RequestPart
对于请求的数据类型Content-Type为 multipart/form-data 时,二进制文件除了以上
@RequestParam和 POJO 对象的方式外,还可以使用@RequestPart。
Servlet API
在控制器方法参数中,可以使用Servlet相关API,SpringMVC会自动将相关Servlet对象装配到方法参数
中,如 HttpServletRequest 、 HttpServletResponse 、 HttpSession 等
使用注解实现简单的登录
实现注册、并将User对象保存在session中
MVC模式登录:
Model:
View:
Controller:
以上是关于SpringMVC中的常用注解的主要内容,如果未能解决你的问题,请参考以下文章