post-image

[Bài đọc] Request Parameters và Path Variables

2. Spring MVC

Cả Request Parameters và Path Variables đều sử dụng để gửi giá trị tới server. Cả hai đều là một phần của URL. Request Parameters có dữ liệu theo cặp (key=value ) được phân tách bằng dấu “&”. Ví dụ URL dưới mang một request parameter  là productId  với giá trị là 3.

http://localhost:8080/view-product?productId=3

Trong lập trình servlet bạn có thể nhận giá trị của một request parameter bằng phương thức getParameter() trong HttpServletRequest như dưới:

String productId = httpServletRequest.getParameter(“productId”);

Trong Spring MVC có một cách dễ dàng hơn để lấy giá trị từ request parameter bằng cách sử dụng annotation org.springframework.web.bind.annotation.RequestParam để chú thích một đối số, giá trị của request parameter sẽ được copy. Ví dụ, Phương thức sau có một đối số để lấy request parameter là productId.

public void sendProduct(@RequestParam int productId)

Như bạn thấy kiểu của đối số được chú thích là @RequestParam không cần phải là kiểu String.

Một “Path Variables” tương tự như một “request parameter”, ngoại trừ “Path Variables” không cần “key” mà chỉ cần “value”. Ví dụ action “view-product” ánh xạ tới URL với định dạng như sau:

 /view-product/productId

Khi productId là số nguyên và là mã định danh của một product. Trong Spring MVC, productId gọi là một “path variable”. Nó được sử dụng để gửi giá trị tới server.

Hãy xem phương thức viewProduct() trong ví dụ sau đây minh họa cho việc sử dụng “path variable”

@RequestMapping(value = "/view-product/{id}")
public String viewProduct(@PathVariable Long id, Model model) {
Product product = productService.get(id);
model.addAttribute("product", product);
return "ProductView";
}

Để sử dụng một “path variable”, đầu tiên bạn cần thêm một biến là thuộc tính “value” của annotation RequestMapping. Biến này phải được đặt trong dấu ngoặc nhọn {}. Ví dụ annotation RequestMapping định nghĩa một “path variable” gọi là id:

@RequestMapping(value = "/view-product/{id}")

Sau đó trong đầu vào của phương thức của bạn hãy thêm một biến đặt tên giống với ở trên và chú thích bằng annotation @PathVariable. Hãy xem đầu vào của phương thức viewProduct() . Khi gọi phương thức này, giá trị “id” ở URL sẽ được copy vào “path variable” và có thể sử dụng trong phương thức. Kiểu dữ liệu của biến không cần phải là string. Spring MVC sẽ thực hiện chuyển đổi một giá trị không phải chuỗi.

Bạn có thể sử dụng nhiều “path variables” trong “request mapping”. Ví dụ sau định nghĩa hai “path variables” gồm userId và orderId.

@RequestMapping(value = "/view-product/{userId}/{orderId}")

Để kiểm tra “path variable ” trong phương thức “viewProduct ()” bạn nhập URL dưới đây vào trình duyệt:

http://localhost:8080/view-product/1

Leave a Reply

Your email address will not be published. Required fields are marked *