SpringMVC注解笔记

前言

自己当笔记使用,有错误或补充请指正

简单注解

1、@RestController注解

相当于@Controller+@ResponseBody两个注解的结合,代表返回的是json格式的数据,这个注解是Spring4之后新加的注解,原来返回json格式的数据需要@ResponseBody配合@Controller一起使用;

2、@responseBody注解

作用

  • 将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,进而将数据返回给客户端,通常用来返回JSON数据或者是XML数据,
  • 当方法上面没有写ResponseBody,底层会将方法的返回值封装为ModelAndView对象。 如果返回值是字符串,那么直接将字符串写到客户端;如果是一个对象,会将对象转化为json串,然后写到客户端。
  • 在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。

返回值转换为json格式

  • 通过HttpMessageConverter中的方法实现的,它本是一个接口,在其实现类完成转换。如果是bean对象,会调用对象的getXXX()方法获取属性值并且以键值对的形式进行封装,进而转化为json串。如果是map集合,采用get(key)方式获取value值,然后进行封装。

3、@RequestMapping

  1. @RequestMapping注解是一个用来处理请求地址映射的注解,可用于映射一个请求或一个方法,可以用在类或方法上。

  2. @RequestMapping 的 value 属性必须设值;

  3. 注解中我们可以手动修改编码格式,例如@RequestMapping(value=“/cat/query”,produces=“text/html;charset=utf-8”),前面是请求的路径,后面是编码格式。

  • @RequestMapping 的value属性是通过当前请求的请求地址来匹配请求;从下方源码可以看到value属性是一个字符串类型的数组,因此说明可以将多个请求映射到一个方法上,只需要给value 来指定一个包含多个路径的数组。
  • @RequestMapping的method属性是通过当前请求的请求方式来匹配请求;浏览器向服务器发送请求,请求方式有很多GET、HEAD、POST、PUT、PATCH、DELETE、OPTIONS、TRACE。可以使用method属性来约束请求方式。
  • @RequestMapping的params属性是通过当前请求的请求参数来匹配请求;params属性是一个字符串类型的数组,可以通过下面四种表达是来设置匹配关系
  • “param”:要求请求映射的请求必须为包含 param的请求参数
  • “!param”:要求请求映射的请求是不能包含param的请求参数
  • “param=value”:要求请求映射的请求必须包含 param 的请求参数,且 param 参数的值必须为 value
  • “param!=value”: 要求请求映射的请求是必须包含 param 的请求参数,其值不能为 value。
  • @RequestMapping的headers属性是通过当前请求的请求头信息来匹配请求;headers属性是一个字符串类型的数组,可以通过下面四种表达是来设置匹配关系
  • “header”:要求请求映射的请求必须为包含 header的请求头信息
  • “!header”:要求请求映射的请求必须为不包含header的请求头信息
  • “header=value”:要求请求映射的请求必须为包含header的请求头信息,并且header的值必须为value
  • “header!=value”:要求请求映射的请求必须为包含header的请求头信息,并且header的值必须不是value
  • @RequestMapping的consumes属性:指定处理请求的提交内容类型(Content-Type),例如application/json,text/html;
  • @RequestMapping的produces属性: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Mapping
public @interface RequestMapping {

	String name() default "";
	
	@AliasFor("path")
	String[] value() default {};
	
	@AliasFor("value")
	String[] path() default {};
	
	RequestMethod[] method() default {};
	String[] params() default {};
	String[] headers() default {};
	
	String[] consumes() default {};
	String[] produces() default {};
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值