SpringMVC-5 常用注解

新人书写,仅做记录,谢谢观看

五、常用注解

1)@RequestMappering

位置:类上,方法上

作用:定义访问url的映射

属性:path、value:互为别名,用于指定访问url的路径

注:value支持Ant风格匹配符(?:匹配一个字符,*:匹配除斜杆/的任意长度字符,**:匹配任意长度字符)

​ method:用于指定访问的请求方式,如RequestMethod.POST,RequestMethod.GET等等

​ params:用于指定请求传入的参数,必须具有指定的key或key-value的请求才可访问,

​ 如“username”,“username=cenmo",即必须有username参数,必须由值为cenmo的username参数才可被接收访问

​ headers:用于指定请求的头部,必须具有指定的header才可访问

​ 注:params和headers支持简单的判断表达式,如

​ age != 10(age必须不为10),

​ !username(不含username),

​ username(含username),

​ Accept-Lauguage=zh-CN(Accept-Language必须为zh-CN),且可以多个条件设置为一个字符串数组

​ produces:用于指定生成的数据格式,如MediaType.APPLICATION_JSON_VALUE,即“application/json”

​ 注:org.springframework.http下的MediaType

2)@RequestParam

位置:参数旁边

作用:把指定名称的请求参数赋值给控制器中的形参

属性:value、name:互为别名,用于指定请求参数的名称

​ required:是否必须传入

​ defaultValue:用于指定没有该请求参数时,赋给控制器形参的默认值

3)@RequestBody

位置:参数旁边

作用:用于获取请求体的内容(注意:get请求中不可用:get请求中不含请求体),常用于获取json格式对象数据

4)@PathVariable

位置:参数旁边

作用:获取访问url中指定占位符中的内容,如访问请求为/user/1,控制器访问/user/{id},控制器参数@PathVariable Integer id

属性:value,name:互为别名,用于指定占位符中的名称

5)@RequestHeader

位置:参数旁边

作用:获取请求头中指定key的值

属性:

​ value:指定需要获取的请求头名称

示例:

@RequestMapping(path="/hello")
public String sayHello(@RequestHeader(value="Accept") String header) {
    System.out.println(header);
    return "success";
}

6)@CookieValue

位置:参数旁边

作用:用于cookie获取指定key的值

属性:

​ value:指定需要获取的cookie名称

​ defaultValue:指定无指定key时的默认值

示例:

@RequestMapping(path="/hello")
public String sayHello(@CookieValue(value="JSESSIONID") String cookieValue) {
    System.out.println(cookieValue);
    return "success";
}

7)@SessionAttributes

位置:类上

作用:将指定类中所有指定的模型数据(指定名称或指定类型)放入session的域对象中

属性:

​ value[]:指定controller类中需要放入session域的模型数据名称,配置后,该名称的数据将同时放入request和session域中

​ types[]:指定controller类中需要放入session域的模型数据名称,配置后,该类型的数据将同时放入request和session域中

8)@ModelAttribute

位置:参数旁边或方法上

作用:通俗来说,方法上时,该方法将先于控制器方法前执行,将返回值放入model中(key为value属性值,无key则返回对象类型名首字母小写),参数旁,即从model中获取pojo(key为value属性,无key则参数对象类型名首字母小写),且获取的pojo已经被请求参数赋值

​ 1)放置在方法上时,该方法将先于控制器方法前执行,并将方法返回值或Map对象值或Model值放入implicitModel(即放入request域对象中,因为SpringMVC会将其中的值扫入request)。注:此时注解的value值即为implicitModel的key,若无value,则key默认为放入对象类型字母小写名

​ 2)放置在参数旁边,SpringMVC通过该注解的value属性值作为key(若不设置,则为对象类型首字母小写名)从implicitModel中获取对象,获取前先被表单值覆盖原值

​ 若implicitModel无该key,则检查该类是否有@SessionAttributes注解,若无,则新建空的pojo

​ 若有,则从@SessionAttributes获取key(@SessionAttributes注解中也无该key,则报错)

属性:

​ value:方法上指定key值,参数旁指定获取绑定参数前的pojo的key值

9)@InitBinder

位置:方法上

作用:用于设置WebDataBinder初始化时的一些操作,如绑定数据时忽略某些属性

​ 注:使用该注解的方法返回值必须为void,且形参为WebDataBinder

10)@DataTimeFormat

位置:pojo字段上

作用:数据格式化时,将时间字符串数据格式化成给定格式的时间数据

属性:

​ pattern:即定义时间数据的格式,如yyyy-MM-dd hh:mm:ss

​ iso:指定ISO模式的时间数据格式,包括ISO-NONE(不使用,默认),ISO.DATE(yyyy-MM-dd hh:mm:ss),ISO.TIME(hh:mm:ss.SSSZ),ISO.DATE_TIME(yyyy-MM-dd hh:mm:ss.SSSZ)

​ style:用于指定日期时间的格式,由两位字符组成,第一位表示日期,第二位表示时间:S(短日期/时间格式)、M:(中日期/时间格式)、L:(长日期/时间格式)、F:完整日期/时间格式、-:忽略日期或时间格式

11)@NumberFormat

位置:pojo字段上

作用:对数字的类型进行格式化,如3,200,200.3

属性:

​ pattern:指定数字类型数据的格式,如“#.###.###.#”(#表示数字,.表示小数点)

12)@ResponseBody

位置:方法上

作用:将控制器方法返回值(集合类类型,String类型)封装成json格式返回

注:其需要导入jackson-databind的jar包,且版本需要匹配

13)@ExceptionHandler

位置:方法上

作用:定义处理异常的方法(注:有效范围仅在当前控制器,即定义的异常处理方法仅在当前控制器有效)

属性:

​ value[]:用于指定java的异常数组

注:1)该注解修饰的方法可使用Exception对象作为形参获取异常

​ 2)该注解修饰的方法不可使用Map作为形参返回模型数据,但可将异常信息封装到ModelAndView中返回页面,从而达到将异常信息返回给前台页面的效果,其修饰的方法返回值可为ModelAndView,@ResponseBody注解,ResponseEntity

​ 3)该注解定义的所有注解的java异常具有执行顺序,类似java异常的顺序

14)@ControllerAdvice

位置:类上

作用:统一异常处理类,定义项目级别的处理异常的方法(注:有效范围对所有控制器有效,其原理是@ExceptionHandler定义的类中无法处理异常时,则到@ControllerAdvice定义的类中寻找合适的@ExceptionHandler方法处理)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值