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.
Phân tích cách sử dụng Springmvc @PathVariable trong bài blog CFSDN này được tác giả sưu tầm và biên soạn. Nếu các bạn quan tâm đến bài viết này thì nhớ like nhé.
Mục lục
- Phân tích cách sử dụng @PathVariable
- Mô tả vấn đề
- quá trình phân tích cú pháp
- Tham số động sử dụng @PathVariable
- Mã trong lớp Trình điều khiển như sau
Phân tích cách sử dụng @PathVariable
Mô tả vấn đề
?
1
2
3
4
|
@Yêu cầu lập bản đồ
(giá trị =
"/auth1/{uuid}/xxx"
, phương thức = RequestMethod.GET)
công cộng
vô hiệu
Mã hình ảnh1(
@PathVariable
(giá trị =
"Uuid"
) Chuỗi uuid) {
logger.info(uuid);
}
|
Xem đoạn mã trên, cách phân tích uuid trong url và chuyển nó dưới dạng tham số.
quá trình phân tích cú pháp
(Nhận yêu cầu: chẳng hạn như /auth1/xxxx-xxx-xxx/xxx).
1. Tách /auth1/{uuid}/xxx thành auth1, {uuid} và xxx theo /.
2. Thay thế {uuid} bằng (.*) và ghi khóa là uuid.
3. Tương tự chia /auth1/xxxx-xxx-xxx/xxx thành auth1, xxxx-xxx-xxx, xxx.
4. Thực hiện khớp thông thường và nhận uuid=xxxx-xxx-xxx dựa trên nhóm.
5. Đặt uuid=xxxx-xxx-xxx vào thuộc tính của yêu cầu.
6. Lấy biến đường dẫn có tên uuid dựa trên sự phản ánh và chú thích.
7. Đi tới yêu cầu lấy uuid, sau đó gọi phương thức.
Sau đây là mã phân tích cú pháp để kiểm tra springmvc.
?
1
2
3
4
5
6
|
công cộng
tĩnh
vô hiệu
main(String[] args) {
AntPathMatcher phù hợp =
mới
AntPathMatcher();
Hệ thống.out.println(matcher.match(
"{uuid}"
,
"xxx"
));
Bản đồ kết quả = matcher.extractUriTemplateVariables(
"{uuid}"
,
"xxx"
);
System.out.println(kết quả);
}
|
Khi câu hỏi trên được viết là:
?
1
2
3
4
|
@Yêu cầu lập bản đồ
(giá trị =
"/auth1/{uuid}/xxx"
, phương thức = RequestMethod.GET)
công cộng
vô hiệu
Mã hình ảnh1(
@PathVariable
Chuỗi uuid) {
logger.info(uuid);
}
|
Khi , đoạn mã sau mô phỏng và kiểm tra quá trình lấy uuid bằng phản xạ.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
công cộng
tĩnh
vô hiệu
main(String[] args)
ném
Ngoại lệ {
BeanInfo beanInfo = Introspector.getBeanInfo(A.
lớp học
);
MethodDescriptor[] methodDescriptors = beanInfo.getMethodDescriptors();
vì
(Phương thứcDescriptor phương thứcDescriptor : phương thứcDescriptors) {
Hệ thống.out.println(
"phương pháp:"
+ phương thứcDescriptor.getName());
ParameterDescriptor[] params = methodDescriptor.getParameterDescriptors();
nếu như
(tham số !=
vô giá trị
) {
vì
(Tham sốDescriptor: params) {
Hệ thống.out.println(
"tham số:"
+ param.getName());
}
}
}
Phương pháp[] phương pháp = A.
lớp học
.getMethods();
vì
(Phương pháp phương pháp : các phương pháp) {
nếu như
(phương thức.getName().bằng(
"Xin chào"
)) {
LocalVariableTableParameterNameDiscoverer người khám phá =
mới
Biến cục bộTableParameterNameDiscoverer();
String[] methodNames = discoverer.getParameterNames(phương thức);
vì
(Chuỗi methodName : methodNames) {
System.out.println(tên phương thức);
}
}
}
}
|
Tham số động sử dụng @PathVariable
Hiện tại có một siêu liên kết như sau.
?
1
2
|
"
/actions/article/readArticle/${article.id}
"/> "
mục tiêu=
"_trống"
>${article.title}
|
Đặc điểm của siêu liên kết này là giá trị id được phân tích bằng biểu thức EL sẽ được thêm vào đường dẫn URL.
Do đó, trong lớp Trình điều khiển của SpringMVC, nó cần được phân tích cú pháp bằng cách sử dụng @PathVariable("articleId") Long ArticleId.
@PathVariable được sử dụng đặc biệt để phân tích các tham số động trong các yêu cầu URL.
Mã trong lớp Trình điều khiển như sau
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
công cộng
tĩnh
cuối cùng
Chuỗi URL_ARTICLE_READ =
"bài viết/đọcArticle/{articleId}"
;
/**
* Tới trang chi tiết bài viết
* Lấy nội dung bài viết được chỉ định dựa trên số ID bài viết được chỉ định trong đường dẫn URL
*
* @param ArticleId Số ID của bài viết được chỉ định
* @return Lấy dữ liệu của bài viết này và vào trang chi tiết bài viết
*/
@Yêu cầu lập bản đồ
(giá trị = {URL_ARTICLE_READ} )
công cộng
ModelAndView đọcBài viết(
@PathVariable
(
"Id bài viết"
) Id bài viết dài){
LOGGER.thông tin
"nhập trang chi tiết bài viết, ArticleId = {}"
, Id bài viết);
cuối cùng
Bài viết bài viết = ArticleService.getArticleById(articleId);
...
}
|
Bằng cách này, giá trị của ${article.id} trên trang cuối cùng được ánh xạ tới Long ArticleId trong Java.
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.
Liên kết gốc: https://blog.csdn.net/zxy861114/article/details/51459077.
Cuối cùng, bài viết về phân tích cách sử dụng của Springmvc @PathVariable kết thúc tại đây. Nếu bạn muốn biết thêm về phân tích cách sử dụng của Springmvc @PathVariable, vui lòng tìm kiếm bài viết CFSDN hoặc tiếp tục duyệt các bài viết liên quan. blog tương lai! .
Tôi là một lập trình viên xuất sắc, rất giỏi!