天天看点

SpringMVC注解说明

@controller

通过@controller标注即可将class定义为一个controller类。

@RequestMapping

value 表示需要匹配的url的格式。
method 表示所需处理请求的http 协议(如get,post,put,delete等),可选值为RequestMethod这个enum的值。
params 格式为”paramname=paramvalue” 或 “paramname!=paramvalue”。 表示参数必须等于某值,或者不等于才进入此映射方法。不填写的时候表明不限制
headers 用来限定对应的reqeust请求的headers中必须包括的内容,例如headers={"Connection=keep-alive"}, 表示请求头中的connection的值必须为keep-alive。

@RequestParam

value 对应表单name空间的值
required 是否允许为空
defaultValue 默认值

@PathVariable

获得地址栏中传的参数 例如:

[java] view plain copy print ?

  1. @RequestMapping(value="/{groupId}.do")
  2. publicvoiddetail(@PathVariablelonggroupId){
  3. groupRepository.selectOne(groupId);
  4. }

@RequestBody

在参数之前加入@RequestBody注解。用来将指定的客户端发送过来的请求参数的数据格式转换成java实体

[java] view plain copy print ?

  1. @RequestMapping(value="/xxxxx.do")
  2. publicvoidcreate(@RequestBody()Stringhost){
  3. System.out.println("-----------"+host);
  4. }

@RequestHeader

在参数之前加入@RequestHeader注解。用来将指定的请求头信息影射为方法的参数。

[java] view plain copy print ?

  1. @RequestMapping(value="/xxxxx.do")
  2. publicvoidcreate(@RequestHeader()MultiValueMap<String,String>host){
  3. System.out.println("-----------"+host);
  4. }

@ResponseBody

如果这个方法定义了@ResponseBody注解。那么会把返回值转换成这个数据格式,输出给客户端

[java] view plain copy print ?

  1. @RequestMapping(value="/xxx.do")
  2. @ResponseBody
  3. publicMultiValueMap<String,String>create(@RequestHeader()MultiValueMap<String,String>hosts)throwsException{
  4. returnhosts;
  5. }

@ResponseStatus

返回一个指定的http response状态码。 [java] view plain copy print ?

  1. @ResponseStatus(reason="noreason",value=HttpStatus.BAD_REQUEST)
  2. @RequestMapping("/responsestatus")
  3. publicvoidresponseStatusTest(){
  4. }

@SessionAttributes

写在类级别的注解,定义一个session attributes,属性名字为SessionAttributes指定。可以指定多个(数组),也同时可以指定类型。

[java] view plain copy print ?

  1. @Controller
  2. @SessionAttributes({"user"})
  3. @RequestMapping("/test")
  4. publicclassControllerTest{
  5. @RequestMapping("/session")
  6. @ResponseBody
  7. publicStringsessionIn(@ModelAttribute("user")Useruser){
  8. return"index";
  9. }
  10. }

@CookieValue [java] view plain copy print ?

  1. @RequestMapping("/cookie")
  2. @ResponseBody
  3. publicStringcookie(@CookieValue("JSESSIONID")StringsessionId){
  4. returnsessionId;
  5. }

@InitBinder

在controller中注册一个customer protperty editor以解析request中的参数并通过date bind机制与handler method中的参数做绑定。

[java] view plain copy print ?

  1. @InitBinder
  2. publicvoidinitBinder(WebDataBinderbinder){
  3. SimpleDateFormatdateFormat=newSimpleDateFormat("yyyy-MM-dd");
  4. dateFormat.setLenient(false);
  5. binder.registerCustomEditor(Date.class,newCustomDateEditor(
  6. dateFormat,false));
  7. }

[java] view plain copy print ?

  1. @RequestMapping("/databind1")
  2. publicModelAndViewdatabind1(Datedate){
  3. }

访问url http://localhost:8080/springmvc/databind1.action?date=2000-01-02

通过initbinder中注册的customeDateEditor类型,自动将2000-01-02转换为日期类型

@ExceptionHandler

[java] view plain copy print ?

  1. @RequestMapping("/exception")
  2. publicvoidExceptionTest()throwsException{
  3. thrownewException("idon'tknow");
  4. }
  5. @ExceptionHandler
  6. publicStringhandleException(Exceptione,HttpServletRequestrequest){
  7. System.out.println(e.getMessage());
  8. return"helloworld";
  9. }