zoukankan      html  css  js  c++  java
  • springmvc常用注解之@Controller和@RequestMapping

    对于各种注解而言,排第一的当然是“@Controller”,表明某类是一个controller。 

    “@RequestMapping”请求路径映射,如果标注在某个controller的类级别上,则表明访问此类路径下的方法都要加上其配置的路径;最常用是标注在方法上,表明哪个具体的方法来接受处理某次请求。 

    @Controller
    @RequestMapping(value="/book")
    public class BookController {
        
        @RequestMapping(value="/title")
        public String getTitle(){
            return "title";
        }
        
        @RequestMapping(value="/content")
        public String getContent(){
            return "content";
        }
    }

    由于BookController类加了value="/book"的“@RequestMapping”的注解,所有相关路径都要加上"/book",即请求的url分别为: 

    1. http://localhost:8080/book/title
    2. http://localhost:8080/book/content

    "@RequestMapping"的value值前后是否有“/”对请求的路径没有影响,即value="book" 、"/book"、"/book/"其效果是一样的

    "@RequestMapping" 的属性

      • value: 指定请求的实际url
        1. 普通的具体值。如前面的value="/book"。
        2. 含某变量的一类值
        @RequestMapping(value="/get/{bookId}")
            public String getBookById(@PathVariable String bookId,Model model){
                model.addAttribute("bookId", bookId);
                return "book";
            }

        路径中的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都会映射到该方法上

      • method:  指定请求的method类型, GET、POST、PUT、DELETE等;
        @RequestMapping(value="/get/{bookid}",method={RequestMethod.GET,RequestMethod.POST})

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

      • headers
        @RequestMapping(value="/header/id", headers = "Accept=application/json"):表示请求的URL必须为“/header/id 且 请求头中必须有“Accept =application/json”参数即可匹配。
  • 相关阅读:
    Android Gradle Plugin指南(五)——Build Variants(构建变种版本号)
    文件内容操作篇clearerr fclose fdopen feof fflush fgetc fgets fileno fopen fputc fputs fread freopen fseek ftell fwrite getc getchar gets
    文件操作篇 close creat dup dup2 fcntl flock fsync lseek mkstemp open read sync write
    嵌入式linux应用程序调试方法
    version control system:git/hg/subversion/cvs/clearcase/vss。software configruation management。代码集成CI:Cruisecontrol/hudson/buildbot
    最值得你所关注的10个C语言开源项目
    如何记录linux终端下的操作日志
    CentOS 5.5 虚拟机安装 VirtualBox 客户端增强功能
    sizeof, strlen区别
    C/C++嵌入式开发面试题
  • 原文地址:https://www.cnblogs.com/wanghuaijun/p/5549683.html
Copyright © 2011-2022 走看看