spring mvc注解笔记

1、@Controller

  @Controller 用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象。分发处理器将会扫描使用了该注解的类的方法,

  并检测该方法是否使用了@RequestMapping 注解。@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。

       @Controller 标记在一个类上还不能真正意义上的说它就是SpringMVC 的一个控制器类,因为这个时候Spring 还不认识它。

  这个时候就需要我们把这个控制器类交给Spring 来管理。有两种方式可以管理:

  <!--方式一-->
  <bean class="com.cqvie.handler.HelloWorld"/>
  <!--方式二-->
  < context:component-scan base-package = "com.cqvie" /> <!-- 路径写到controller的上一层 -->
  此外Controller 不会直接依赖于HttpServletRequest 和HttpServletResponse 等HttpServlet 对象,它们可以通过Controller 的方法参数灵活的获取到。
  为了先对Controller 有一个初步的印象,以下先定义一个简单的Controller :
  package com.cqvie.handler;
  import org.springframework.stereotype.Controller;
  @Controller   public class HelloWorld {   @RequestMapping("/helloworld")   public String sayHello() {   System.out.println("Hello World!");   return "success";    }   }

2、@RequestMapping

  2.1 value:指定请求的实际url
    (1)普通的具体值。

      @RequestMapping(value="book")
    (2)含某变量的一类值。

      @RequestMapping(value="/get/{bookId}")   路径中的bookId可以当变量,@PathVariable注解即提取路径中的变量值。

    (3)ant风格

      @RequestMapping(value="/get/id?"):可匹配“/get/id1”或“/get/ida”,但不匹配“/get/id”或“/get/idaa”;
      @RequestMapping(value="/get/id*"):可匹配“/get/idabc”或“/get/id”,但不匹配“/get/idabc/abc”;
      @RequestMapping(value="/get/id/*"):可匹配“/get/id/abc”,但不匹配“/get/idabc”;
      @RequestMapping(value="/get/id/**/{id}"):可匹配“/get/id/abc/abc/123”或“/get/id/123”,也就是Ant风格和URI模板变量风格可混用。

    (4)含正则表达式的一类值
      @RequestMapping(value="/get/{idPre:\\d+}-{idNum:\\d+}"):可以匹配“/get/123-1”,但不能匹配“/get/abc-1”,这样可以设计更加严格的规则。
      可以通过@PathVariable 注解提取路径中的变量(idPre,idNum)

    (5)或关系
      @RequestMapping(value={"/get","/fetch"} )即 /get或/fetch都会映射到该方法上。

  2.2 method:指定请求的method类型, GET、POST、PUT、DELETE等

    @RequestMapping(value="/get/{bookid}",method=RequestMethod.GET)
    @RequestMapping(value="/get/{bookid}",method={RequestMethod.GET,RequestMethod.POST})

  2.3 params:指定request中必须包含某些参数值是,才让该方法处理

    @RequestMapping(params="action=del"),请求参数包含“action=del”,如:http://localhost:8080/book?action=del

     仅处理请求中包含了名为“action”,值为“del”的请求。

  2.4 headers:指定request中必须包含某些指定的header值,才能让该方法处理请求

    @RequestMapping(value="/header/id", headers = "Accept=application/json")

    表示请求的URL必须为“/header/id 且请求头中必须有“Accept =application/json”参数即可匹配。

  2.5 consumes:指定处理请求的提交内容类型(Content-Type),例如application/json, text/html

    @RequestMapping(value = "/pets", method = RequestMethod.POST, consumes="application/json")

    方法仅处理request Content-Type为“application/json”类型的请求。

  2.6 produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回。

    @RequestMapping(value = "/pets/{petId}", method = RequestMethod.GET, produces="application/json")

    方法仅处理request请求中Accept头中包含了"application/json"的请求,同时暗示了返回的内容类型为application/json;

 

3、@RequestParam绑定单个请求参数值

4、@PathVariable绑定URI模板变量值

5、@ModelAttribute

  5.1 @ModelAttribute注释一个方法

  5.2 @ModelAttribute注释一个方法的参数

  5.3 @ModelAttribute注解的使用场景 

6、@SessionAttributes

7、@Responsebody与@RequestBody

8、@Resource和@Autowired

9、@CookieValue

 

参考一下做笔记

https://www.cnblogs.com/xiaoxi/p/5718894.html

https://www.cnblogs.com/yjq520/p/6734422.html

posted @ 2018-08-10 09:58  nike_ha  阅读(174)  评论(0编辑  收藏  举报