Request Parameter và Path Variable
Cả Request Parameter và Path Variable đều sử dụng để gửi giá trị tới server. Cả hai đều là một phần của URL. Chúng ta sẽ cùng tìm hiểu các khái niệm, thuộc tính và sự khác nhau của chúng ngay sau đây.
1. Request Parameter
Request Parameter có dữ liệu theo cặp (key = value) được phân tách bằng dấu &.
- key = name value = techmely
URL mang nhiều request parameter được biểu diễn trên như sau http://localhost:8080/techmely?param1=techmely¶m2=hoclaptrinh
- key = param1 value = techmely
- key = param2 value = hoclaptrinh
Để nhận giá trị của một request parameter sử dụng annotation @RequestParam như sau:
public String getValueWithRequestParam(@RequestParam(value="param1", required=true) String param1){
...
}
Ở đây annotation @RequestParam để khai báo là sẽ sử dụng nó để lấy các giá trị trên URL. Một số thuộc tính của annotation :
- value="param1" : Khai báo để lấy giá trị tên là "param1" trên trình duyệt. Như vậy ứng với giá trị "techmely" trên trình duyệt sẽ gán vào giá trị String param1
- require = true : Thì chúng ta bắt buộc là trên url phải có tham số param1.
2. Path Variable
Với @PathVariable không cần key truyền trên URL chỉ cần value.
value = hoclaptrinh
Để sử dụng @PathVariable cần thêm biến thuộc tính value của annotation @RequestMapping
@RequestMapping(value="/getValueWithPathVariable/{name}",method = GET)
public String getValueWithPathVariable(@PathVariable String name, Model model){
model.addAttribute("name", name);
return "index";
}
value=”/getValueWithPathVariable/{name}
:Khi sử dụng nó sẽ map với trình duyệt có định dạng làgetValueWithPathVariable/hoclaptrinh
@PathVariable
chúng ta sẽ lấy giá trị là hoclaptrinh từ trình duyệt và gắn vào biến String name.
3. Kết luận
Cả 2 cách trên đều thực hiện chung một nhiệm vụ là lấy các tham số từ người dùng truyền lên. Bạn sử dụng cái nào cũng làm được mục đích của mình. Tuy nhiên tuỳ vào thiết kế của một hệ thống mà lựa chọn Request Param hoặc Path Variable để sử dụng mới đem lại hiệu quả cao