• 转载:浅析@PathVariable 和 @RequestParam


    在网上看了一篇很好的文章,讲的很清楚明了,说到了点子上(转自:https://blog.csdn.net/chuck_kui/article/details/55506723):

    首先 上两个地址:

    地址① http://localhost:8989/SSSP/emps?pageNo=2

    地址② http://localhost:8989/SSSP/emp/7  (7这个参数叫“动态参数”)

    如果想获取地址①中的 pageNo的值 ‘2’ ,则使用  @RequestParam,

    如果想获取地址②中的 emp/7 中的 ‘7 ’   则使用 @PathVariable


    获取地址① 中的‘2’ 使用的 方法是如下:

     1 @RequestMapping("/emps")  
     2 public String list(@RequestParam(value="pageNo",required=false,  
     3         defaultValue="1")String pageNoStr,Map<String, Object>map){  
     4       
     5     int pageNo = 1;     
     6     try {  
     7         //对pageNo 的校验   
     8         pageNo = Integer.parseInt(pageNoStr);  
     9         if(pageNo<1){  
    10             pageNo = 1;  
    11         }  
    12     } catch (Exception e) {
    13     }  
    14     Page<Employee> page = employeeService.getPage(pageNo, 5);  
    15     map.put("page",page);  
    16       
    17     return "emp/list";  
    18 }  
    View Code

    获取地址② 中的 ‘7’ 使用的方法是如下:

    1 @RequestMapping(value="/emp/{id}",method=RequestMethod.GET)  
    2 public String edit(@PathVariable("id")Integer id,Map<String , Object>map){  
    3     Employee employee = employeeService.getEmployee(id);  
    4     List<Department> departments = departmentService.getAll();  
    5     map.put("employee", employee);  
    6     map.put("departments", departments);  
    7     return "emp/input";  
    8 } 
    View Code

    大道理不讲 原理也不分析就记忆一点,那一点呢? 看‘这个符号‘?’ 

    1. 若获取的入参的 参数 是下面这种形式 就使用 @requestParam 去获取 参数‘2’

    /emps?pageNo=2

    2. 若获取的入参的 参数 是下面这种形式 就使用 @PathVariable 去获取参数 ‘7’

    /emp/7

    @PathVariable是用来获得请求url中的动态参数


    理论 可看 下面的博文

    http://blog.csdn.net/walkerjong/article/details/7946109   

    @RequestParam @RequestBody @PathVariable 等参数绑定注解详解

    http://dorole.com/tag/uri-template/

    http://blog.csdn.net/jaryle/article/details/51851120     

     @pathvariable和@RequestParam注解的区别

    使用动态参数的例子:

    页面:

    1 function login() {
    2     var url = "${pageContext.request.contextPath}/person/login/";
    3     var query = $('#id').val() + '/' + $('#name').val() + '/' + $('#status').val();
    4     url += query;
    5     $.get(url, function(data) {
    6         alert("id: " + data.id + "name: " + data.name + "status: "
    7                 + data.status);
    8     });
    9 }
    View Code

    后台:

     1 /**
     2 * @RequestMapping(value = "user/login/{id}/{name}/{status}") 中的 {id}/{name}/{status}
     3 * 与 @PathVariable int id、@PathVariable String name、@PathVariable boolean status
     4 * 一一对应,按名匹配。
     5 */
     6 
     7 @RequestMapping(value = "user/login/{id}/{name}/{status}")
     8 @ResponseBody
     9 //@PathVariable注解下的数据类型均可用
    10 public User login(@PathVariable int id, @PathVariable String name, @PathVariable boolean status) {
    11 //返回一个User对象响应ajax的请求
    12     return new User(id, name, status);
    13 }
    View Code
  • 相关阅读:
    洛谷P4979 矿洞:坍塌
    [SHOI2015]脑洞治疗仪
    洛谷P2135 方块消除
    洛谷P1436 棋盘分割
    洛谷P2796 Facer的程序
    浅谈位运算
    [SDOI2006]最短距离
    12耐心_预测未来
    11耐心_有效市场假说
    02C++条件变量
  • 原文地址:https://www.cnblogs.com/mySummer/p/9073117.html
Copyright © 2020-2023  润新知