• 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”参数即可匹配。
  • 相关阅读:
    spring管理hibernate,mybatis,一级缓存失效原因
    The constructor ClassPathXmlApplicationContext(String) refers to the missing type BeansException
    idea中Hibernate错误:无法解析表
    使用Dom4解析xml
    关于idea中新建web项目 webapp文件夹没有小蓝点 ,启动服务,访问不到解决方案
    解决VS编译太慢问题
    Entity FrameWork6 Code First带virtual关键字外键 Asp.Net WebApi无法返回实体类数据问题
    webapi请求返回{"$id":"1","Message":"请求的资源不支持 http 方法“GET”。"}
    WPF的BusyIndicator控件只显示遮罩层,不显示提示层问题
    [转]Mysql将数据分组后取出时间最近的数据
  • 原文地址:https://www.cnblogs.com/wanghuaijun/p/5549683.html
Copyright © 2020-2023  润新知