zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    欧拉回路一个定理的证明
    NOIP2018 初赛数学第二题解析
    linux 减少Terminal路径的方法
    网络挖坑
    linux 记录
    河南游记 Day0

    NOI2018 Day 1 你的名字
    大佬的几行fastIO
    Codeforces 781B. Innokenty and a Football League
  • 原文地址:https://www.cnblogs.com/sss-justdDoIt/p/9453235.html
Copyright © 2011-2022 走看看