1. 程式人生 > >淺析 @PathVariable 和 @RequestParam

淺析 @PathVariable 和 @RequestParam

首先 上兩個地址:

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

地址②http://localhost:8989/SSSP/emp/7

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

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

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

[java] view plain copy print?
  1. @RequestMapping(“/emps”)  
  2. public String list(@RequestParam(value=“pageNo”,required=
    false,  
  3.         defaultValue=”1”)String pageNoStr,Map<String, Object>map){  
  4.     int pageNo = 1;  
  5.     try {  
  6.         //對pageNo 的校驗 
  7.         pageNo = Integer.parseInt(pageNoStr);  
  8.         if(pageNo<1){  
  9.             pageNo = 1;  
  10.         }  
  11.     } catch (Exception e) {}  
  12.     Page<Employee> page = employeeService.getPage(pageNo, 5
    );  
  13.     map.put(”page”,page);  
  14.     return“emp/list”;  
  15. }  
  @RequestMapping("/emps")
    public String list(@RequestParam(value="pageNo",required=false,
            defaultValue="1")String pageNoStr,Map<String, Object>map){

        int pageNo = 1;

        try {
            //對pageNo 的校驗 
            pageNo = Integer.parseInt(pageNoStr);
            if(pageNo<1){
                pageNo = 1;
            }
        } catch (Exception e) {}

        Page<Employee> page = employeeService.getPage(pageNo, 5);
        map.put("page",page);

        return "emp/list";
    }

獲取地址② 中的 ‘7’ 使用的方法是如下: [java] view plain copy print?
  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. }  
 @RequestMapping(value="/emp/{id}",method=RequestMethod.GET)
    public String edit(@PathVariable("id")Integer id,Map<String , Object>map){
        Employee employee = employeeService.getEmployee(id);
        List<Department> departments = departmentService.getAll();
        map.put("employee", employee);
        map.put("departments", departments);
        return "emp/input";
    }


大道理不講 原理也不分析就記憶一點,那一點呢? 看‘這個符號‘?’ 

1. 若獲取的入參的 引數 是下面這種形式 就使用 @requestParam 去獲取 引數‘2’

/emps?pageNo=2

2. 若獲取的入參的 引數 是下面這種形式 就使用 @PathVariable 去獲取引數 ‘7’

/emp/7

多說一點,拽一下奮鬥

RequestParam  漢語意思就是: 請求引數 顧名思義 就是獲取引數的 

PathVariable 漢語意思是:路徑變數,顧名思義,就是要獲取一個url 地址中的一部分值,那一部分呢? RequestMapping 上說明了@RequestMapping(value=”/emp/{id}”),我就是想獲取你URL地址 /emp/ 的後面的那個 {id}的。

so,就看‘?’ 若是想獲取 ‘?’ 後面的pageNo 的值 ‘2’, 就使用RequestParam ,

若想獲取的是url 地址的一部分 ‘7’ 就使用PathVariable 

尷尬

@PathVariable是用來獲得請求url中的動態引數的

理論 可看 下面的博文

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

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

http://blog.csdn.net/jaryle/article/details/51851120       @pathvariable和@RequestParam註解的區別