CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.
Bài viết trên blog CFSDN này nói về sự khác biệt giữa @RequestParam, @PathParam, @PathVariable và các chú thích khác. Nó được tác giả sưu tầm và biên soạn. Nếu bạn quan tâm đến bài viết này, hãy nhớ thích nó.
Các chú thích @RequestParam và @PathVariable được sử dụng để nhận yêu cầu từ các yêu cầu. Cả hai đều có thể nhận tham số. Điểm khác biệt chính là @RequestParam lấy giá trị từ yêu cầu, trong khi @PathVariable điền nó từ mẫu URI.
@Yêu cầuParam
Nhìn vào đoạn mã sau:
http://localhost:8080/springmvc/hello/101?param1=10¶m2=20 。
Theo URL ở trên, bạn có thể lấy nó theo cách này.
?
1
2
3
4
5
|
công cộng
Chuỗi getDetails(
@Yêu cầuParam
(giá trị=
"tham số1"
, bắt buộc=
ĐÚNG VẬY
) Chuỗi param1,
@Yêu cầuParam
(giá trị=
"tham số2"
, bắt buộc=
SAI
) Chuỗi param2){
...
}
|
@RequestParam hỗ trợ bốn tham số sau.
defaultValue Nếu yêu cầu này không mang tham số này hoặc tham số trống thì giá trị mặc định sẽ được bật.
name Tên để liên kết tham số này phải giống với URL ở trên.
bắt buộc Tham số này không bắt buộc.
value có cùng chức năng với name và là bí danh của thuộc tính name.
@PathVariable
Chú thích này có thể xác định một mẫu trong URL. Hãy xem URL sau.
http://localhost:8080/springmvc/hello/101?param1=10¶m2=20 。
Bạn có thể viết url trên như thế này:
?
1
2
3
4
5
6
|
@Yêu cầu lập bản đồ
(
"/xin chào/{id}"
)
công cộng
Chuỗi getDetails(
@PathVariable
(giá trị=
"nhận dạng"
) Chuỗi id,
@Yêu cầuParam
(giá trị=
"tham số1"
, bắt buộc=
ĐÚNG VẬY
) Chuỗi param1,
@Yêu cầuParam
(giá trị=
"tham số2"
, bắt buộc=
SAI
) Chuỗi param2){
.......
}
|
Sự khác biệt là rõ ràng.
@PathParam
Chú thích này giống với pathVariable của spring và nó cũng dựa trên các mẫu, nhưng đây là một triển khai trong gói jboss, còn cái trên là một triển khai của spring và cả hai gói đều phải được nhập.
@QueryParam
@QueryParam ban đầu được cung cấp bởi JAX-RS và có chức năng tương tự như requestParam của Spring.
@Phản hồi cơ thể
replyBody cho biết cách máy chủ trả về nội dung hoặc đối tượng dưới dạng nội dung phản hồi HTTP. Có nhiều giá trị, thường được đặt thành json.
@Yêu cầu cơ thể
Yêu cầu này thường được sử dụng khi thực hiện một yêu cầu đăng bài và các tham số được đưa vào phần nội dung yêu cầu.
Bổ sung: @pathvariable tham số_SpringMVC năm ràng buộc tham số chú thích.
@pathvariable tham số_SpringMVC năm ràng buộc tham số chú thích.
Liên kết tham số SpringMVC chỉ đơn giản có nghĩa là liên kết dữ liệu khóa/giá trị mà máy khách yêu cầu với các tham số chính thức của phương thức bộ điều khiển và sau đó bạn có thể sử dụng các tham số trong bộ điều khiển.
Phần sau đây minh họa cách liên kết tham số thông qua 5 chú thích thường được sử dụng:
1. @PathVariable注解
@PathVariable được sử dụng để lấy các tham số động trong URL yêu cầu. Các biến trong URL có thể được ánh xạ tới các tham số của phương thức xử lý hàm. Phần giữ chỗ {xxx} trong URL có thể được liên kết thông qua @PathVariable("xxx") vào. các thông số đầu vào của phương thức vận hành.
Mã mẫu:
?
1
2
3
4
5
6
|
@Phản hồi cơ thể
@Yêu cầu lập bản đồ
(
"/testUrlPathParam/{param1}/{param2}"
)
công cộng
vô hiệu
testUrlPathParam(yêu cầu httpServletRequest,
@PathVariable
Chuỗi param1,
@PathVariable
Chuỗi param2) {
Hệ thống.out.println(
"Tham số param1 thu được thông qua PathVariable="
+param1);
Hệ thống.out.println(
"Tham số param2 thu được thông qua PathVariable="
+ thông số2);
}
|
Kết quả đầu ra:
Tham số param1=1 thu được thông qua PathVariable.
Tham số param2=2 thu được thông qua PathVariable.
Chú thích 2.@RequestHeader
Chú thích @RequestHeader có thể liên kết giá trị của phần tiêu đề Yêu cầu với các tham số của phương thức.
Mã mẫu:
?
1
2
3
4
|
@Phản hồi cơ thể
@Yêu cầu lập bản đồ
(
"/testHeaderParam"
)
công cộng
vô hiệu
testHeaderParam(yêu cầu HttpServletRequest,
@Yêu cầu Tiêu đề
Chuỗi param1) {
Hệ thống.out.println(
"Tham số param1 thu được thông qua requestHeader="
+param1);
}
|
Kết quả đầu ra:
Tham số param1=abc thu được thông qua requestHeader.
Chú thích 3.@CookieValue
@CookieValue có thể liên kết giá trị cookie trong tiêu đề Yêu cầu với các tham số phương thức.
Mã mẫu:
?
1
2
3
4
5
|
@Phản hồi cơ thể
@Yêu cầu lập bản đồ
(
"/testCookieParam"
)
công cộng
vô hiệu
testCookieParam(yêu cầu HttpServletRequest, phản hồi HttpServletResponse,
@Giá trị Cookie
Chuỗi sessionid) {
Hệ thống.out.println(
"Thông số sessionid=" thu được thông qua CookieValue="
+ id phiên);
}
|

Kết quả đầu ra:
Tham số sessionid=ebef978eef6c46f8a95cc0990d2d360a có được thông qua CookieValue.
Chú thích 4.@RequestParam
Chú thích @RequestParam được sử dụng để xử lý Content-Type: nội dung được mã hóa bởi ứng dụng/x-www-form-urlencoded. Phương thức gửi là get hoặc post. (Trong giao thức Http, thuộc tính enctype của form là phương thức mã hóa. Có hai thuộc tính thường được sử dụng: application/x-www-form-urlencoded và multipart/form-data. Mặc định là application/x-www-form- mã hóa url);
Bản chất của chú thích @RequestParam là chuyển đổi Map tham số Key-Value trong request.getParameter() thành một đối tượng hoặc trường nhận tham số bằng cách sử dụng cấu hình ConvertService cơ chế chuyển đổi của Spring.
Giá trị của queryString trong phương thức get và giá trị của body data trong phương thức post sẽ được Servlet chấp nhận và chuyển đổi thành tập tham số request.getParameter(), do đó có thể lấy được @RequestParam;
Chú thích này có ba thuộc tính: giá trị, bắt buộc và giá trị mặc định được sử dụng để chỉ định tên id của giá trị được truyền vào, bắt buộc được sử dụng để cho biết tham số có được yêu cầu hay không và defaultValue cho biết giá trị mặc định khi tham số được truyền vào. không được thông qua.
Mã mẫu:
?
1
2
3
4
5
|
@Phản hồi cơ thể
@Yêu cầu lập bản đồ
(
"/testRequestParam"
)
công cộng
vô hiệu
testRequestParam(Yêu cầu httpServletRequest,
@Yêu cầuParam
(giá trị =
"số"
, bắt buộc =
ĐÚNG VẬY
, giá trị mặc định =
"0"
)
số nguyên
số) {
Hệ thống.out.println(
"Số tham số thu được thông qua requestParam="
+ số);
}
|
Kết quả đầu ra:
Tham số num=10 thu được thông qua requestParam.
Chú thích 5.@RequestBody
Chú thích @RequestBody được sử dụng để xử lý dữ liệu được truyền bởi HttpEntity (nội dung yêu cầu) và thường được sử dụng để xử lý dữ liệu ở định dạng mã hóa không phải Content-Type: application/x-www-form-urlencoded;
Trong yêu cầu GET, vì không có HttpEntity nên @RequestBody không áp dụng .
Trong yêu cầu POST, các tham số được truyền qua HttpEntity phải khai báo kiểu dữ liệu Content-Type trong tiêu đề yêu cầu. SpringMVC phân tích dữ liệu trong HttpEntity bằng cách sử dụng HttpMessageConverters được HandlerAdapter định cấu hình, sau đó liên kết nó với Bean tương ứng.
Mã mẫu:
?
1
2
3
|
@Phản hồi cơ thể
@Yêu cầu lập bản đồ
(
"/testRequestBody"
)
công cộng
vô hiệu
testRequestBody(yêu cầu HttpServletRequest,
@Yêu cầu cơ thể
Chuỗi bodyStr){
Hệ thống.out.println(
"Thông số bodyStr=" thu được thông qua AskBody="
+ bodyStr); }
|
Kết quả chạy mã:
Tham số bodyStr= thu được thông qua requestBody là nội dung của phần thân.
Trên đây là kinh nghiệm cá nhân của mình, hi vọng có thể cho các bạn tham khảo và mong các bạn có thể ủng hộ mình. Nếu có sai sót hoặc thiếu sót gì xin vui lòng chỉ giáo cho tôi.
Liên kết gốc: https://blog.csdn.net/u011410529/article/details/66974974.
Cuối cùng, bài viết này về sự khác biệt giữa @RequestParam, @PathParam, @PathVariable và các chú thích khác kết thúc tại đây. Nếu bạn muốn biết thêm về sự khác biệt giữa @RequestParam, @PathParam, @PathVariable và các chú thích khác, vui lòng Tìm kiếm các bài viết về CFSDN hoặc tiếp tục duyệt các bài viết liên quan, tôi hy vọng bạn sẽ ủng hộ blog của tôi trong tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!