zoukankan      html  css  js  c++  java
  • @RequestMapping使用须知

    ----------------------siwuxie095

       

       

       

       

       

       

       

       

    @RequestMapping 使用须知

       

       

    使用 @RequestMapping 注解映射请求路径

       

       

       

    你可以使用 @RequestMapping 注解来将请求 URL 映射到整个

    某个特定的方法上,即 @RequestMapping 既可以定义在类上,

    也可以定义方法上

       

    一般来说,类级别的注解负责将一个特定(或符合某种模式)的请求

    路径映射到一个控制器上,同时通过方法级别的注解来细化映射,即

    根据特定的 HTTP 请求方法(GET、POST 方法等)、HTTP请求中是

    否携带特定参数等条件,将请求映射到匹配的方法上

       

       

       

       

       

    具体配置方法:

       

    1)映射单个 URL

       

    @RequestMapping("")@RequestMapping(value="")

       

    2)映射多个 URL

    @RequestMapping({"",""})@RequestMapping(value={"",""})

       

       

    路径开头是否加斜杠 / 均可,建议加上,如:@RequestMapping("/hello")

       

       

       

       

       

    @RequestMapping 一共有五种映射方式:

       

    1标准 URL 映射

       

    标准 URL 映射是最简单的一种映射,例如:

       

    @RequestMapping("/hello")

       

       

    @RequestMapping({"/hello","/world"})

       

       

       

    2Ant 风格的 URL 映射

       

    Ant 通配符有三种:

       

    通配符

    说明

    ?

    匹配任何单字符

    *

    匹配任意数量的字符(含 0 个)

    **

    匹配任意数量的目录(含 0 个)

       

    例如:

       

    1)@RequestMapping("/?/hello/")

       

    2)@RequestMapping("/*/hello")

       

    3)@RequestMapping("/**/hello")

       

       

       

    3占位符 URL 映射

       

    URL 中可以通过一个或多个 {} 占位符映射

       

    例如:@RequestMapping("/user/{userId}/show")

       

       

    可以通过 @PathVariable("") 注解将占位符中的值绑定到方法参数上

       

       

    /**

    * 如果 URL 中的 userId 是纯数字,那么使用 @PathVariable

    * 做绑定时,可以根据自己的需求将方法参数类型设置为 Long

    * IntegerString

    */

    @RequestMapping("/user/{userId}/show")

    public ModelAndView show(@PathVariable("userId") Long userId) {

    // 创建 ModelAndView 对象,并设置视图名称

    ModelAndView mv = new ModelAndView("show");

    // 添加模型数据

    mv.addObject("msg", "User ID" + userId);

    return mv;

    }

       

       

    注意:@PathVariable("") 不能简写为 @PathVariable。因为在

    正常编译时,Java 类反射对象不包含方法的参数名称。如果在编

    译时将 Debug 打开(javac -debug=no),方法的参数名称才

    会记录到类中,此时才能简写,但不建议简写

       

       

    编译时,打开 Debug 的方法:

       

    打开 Eclipse,Project->Properties->Java Compiler,勾选上

    Add variable attributes to generated class files … 即可

       

       

       

       

       

       

    4限制请求方法的 URL 映射

       

    HTTP 请求中最常用的请求方法是 GET、POST,还有其他的

    一些方法,如:DELET、PUT、HEAD 等

       

    限制请求方法,例如:

       

    @RequestMapping(value="/hello", method=RequestMethod.POST)

       

       

    如需限制多个请求方法,以大括号包围,逗号隔开即可,例如:

       

    method={RequestMethod.GET,RequestMethod.POST}

       

       

       

    5限制请求参数的 URL 映射

       

    限制请求参数来映射 URL,例如:

       

    @RequestMapping(value="/user/show", params="userId")

       

    请求中必须带有 userId 参数

       

       

    参数的限制规则如下:

       

    (1)params="userId" 请求参数中必须包含 userId

       

    (2)params="!userId" 请求参数中不能包含 userId

       

    (3)params="userId!=1" 请求参数中必须包含 userId,但不能为 1

       

    (4)params={"userId","userName"} 必须包含 userId 和 userName 参数

       

       

    可以通过 @RequestParam("") 注解将请求参数绑定到方法参数上

       

       

    @RequestMapping(value="/user/show",params="userId")

    public ModelAndView show(@RequestParam("userId") Long userId) {

    // 创建 ModelAndView 对象,并设置视图名称

    ModelAndView mv = new ModelAndView("show");

    // 添加模型数据

    mv.addObject("msg", "User ID" + userId);

    return mv;

    }

       

       

    要注意 @PathVariable("") 和 @RequestParam("") 的不同:

       

    @PathVariable("") 是将 URL 中占位符处的值绑定到方法参数上

       

    @RequestParam("") 是将 URL 后的请求参数绑定到方法参数上

       

       

       

       

       

    附:

       

    推荐一个模拟发送请求的 Chrome 插件 Advanced REST Client,非常好用!

       

    https://chrome.google.com/webstore/detail/advanced-rest-client/hgmloofddffdnphfgcellkdfbfbjeloo

       

       

       

       

       

       

       

    【made by siwuxie095】

  • 相关阅读:
    Intellij IDEA 使用总结
    Apache Camel之FTP组件学习
    谈一谈EasyUI中TreeGrid的过滤功能
    JAVA实用案例之图片水印开发
    三、SolrCloud的搭建
    style里面设置变量
    for 循环中 break-continue 与label标签的使用
    vue ref的用法
    Vuex实践
    vue 数据动态响应(Vue.set方法)
  • 原文地址:https://www.cnblogs.com/siwuxie095/p/8486389.html
Copyright © 2011-2022 走看看