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 SpringMVC này tổng hợp lại 4 cách nhận tham số được truyền bởi front end, đượ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 thì nhớ like nhé.
Mục lục
- Bốn cách để SpringMVC nhận tham số được truyền từ giao diện người dùng
- @RequestParam Nhận chú thích
- @PathVariable nhận được chú thích
- SpringMVC có thể nhận tham số mà không cần đặt bất kỳ chú thích nào.
- SpringMVC cũng có thể được tự động đóng gói thành các đối tượng
- @RequestBody được sử dụng để nhận mảng hoặc đối tượng phức tạp
- Tự động đóng gói SpringMVC (có thể nhập mà không cần truyền tham số)
- SpringMVC không thể nhận các tham số do giao diện người dùng truyền vào.
Bốn cách để SpringMVC nhận tham số được truyền từ giao diện người dùng
- Chú thích @RequestParam
- @PathVariable注解
- Tham số phân tích cú pháp tự động của SpringMVC
- Chú thích @RequestBody của SpringMVC
@RequestParam Nhận chú thích
?
1
2
3
|
lấy/đăng url =>
"xx/người dùng?id=1"
hành động =>
công cộng
Chuỗi Người dùng(
@RequestParams
(tên=
"nhận dạng"
) ID dài ){
}
|
Các tham số được xác định bởi @RequestParam sẽ tự động được phân giải thành loại được xác định bởi phương thức.
?
1
|
@RequestParams
(tên=
"nhận dạng"
) Long id ) (mô phỏng yêu cầu gửi bài qua người đưa thư)
|
@PathVariable nhận được chú thích
?
1
|
lấy/đăng url =>
"xx/người dùng/1"
hành động =>
công cộng
Chuỗi Người dùng(
@PathVariable
(tên=
"nhận dạng"
) Mã số dài){}
|
@PathVariable phải chỉ định loại tương ứng thông qua các biểu thức thông thường. Chỉ khi url được chỉ định dưới dạng số và tham số phương thức được xác định dưới dạng số thì sẽ không có lỗi nào được báo cáo. Ví dụ: (URL có thể bị hạn chế thông qua các quy tắc thông thường khác. Chỉ những URL đáp ứng các điều kiện mới được ánh xạ tới hành động tương ứng, nếu không hành động tương ứng sẽ không được tìm thấy).
?
1
2
|
@Yêu cầu lập bản đồ
(
"/người dùng/{id:\\d}"
)
công cộng
Chuỗi Người dùng(
@PathVariable
(tên=
"nhận dạng"
) Mã số dài){}
|
SpringMVC có thể nhận tham số mà không cần đặt bất kỳ chú thích nào.
Ví dụ.
?
1
2
3
4
5
|
@GetMapping
(
"/loại"
)
công cộng
Thể loại chuỗi (ID dài) {
System.out.println(id);
trở lại
"bài đăng/thể loại"
;
}
|
Nó có thể được truy cập thông qua /category hoặc /category?id=1.
SpringMVC cũng có thể được tự động đóng gói thành các đối tượng
url /category?title=Kiểm tra hoặc /category có thể truy cập tài nguyên đích.
?
1
2
3
4
5
|
@GetMapping
(
"/loại"
)
công cộng
Chuỗi danh mục( MPost bài viết) {
System.out.println(post.getTitle());
trở lại
"bài đăng/thể loại"
;
}
|
@RequestBody được sử dụng để nhận mảng hoặc đối tượng phức tạp
(Các tham số phải được đặt trong phần nội dung yêu cầu và sẽ không được phân tích cú pháp nếu được đặt trong URL, ngay cả khi phương thức yêu cầu được đăng).
?
1
2
3
4
5
6
|
url => /category yêu cầu nội dung =>{
"nhận dạng"
:
1
}
@PostMapping
(
"/loại"
)
công cộng
Thể loại chuỗi(
@Yêu cầu cơ thể
Đăng bài đăng ) {
System.out.println(post.getTitle());
trở lại
"bài đăng/thể loại"
;
}
|
Nếu đó là một mảng đối tượng, hãy thay đổi tham số phương thức thành bài đăng @RequestBody List.
Nhập /category trực tiếp sẽ không tìm thấy hành động tương ứng.
Tự động đóng gói SpringMVC (có thể nhập mà không cần truyền tham số)
-
@Yêu cầuParam
(Các tham số phải được chuyển, nhưng có thể được đặt thành sai theo cách thủ công)
-
@PathVariable
(Mục nhập chỉ được phép nếu nó khớp với biểu thức chính quy đã đặt và không được để trống)
Từ so sánh, có thể thấy mục đích chính là đưa ra các hạn chế chặt chẽ hơn đối với URL nhằm ngăn chặn một số URL khác tham gia hành động.
Cung cấp một cách phức tạp để chấp nhận các tham số @RequestBody, nhưng các tham số phải được đặt trong @RequestBody.
Điều cần lưu ý về PathVariable là các tham số chứa các ký tự đặc biệt, có thể dẫn đến tham số không đầy đủ.
Đối với các phương thức yêu cầu khác nhau, cần phải xác minh người dùng hiện tại và mã hóa URL. (Đặc biệt là dữ liệu quan trọng).
SpringMVC không thể nhận các tham số do giao diện người dùng truyền vào.
Khi tôi đang học SpringMvc, tôi gặp phải một vấn đề. Nền không thể nhận được các thông số do quầy lễ tân chuyển đến. Sau một thời gian dài trì hoãn, cuối cùng tôi đã viết blog để ghi lại cạm bẫy này. –.
danh sách mã
Cách sử dụng SpringMvc để chấp nhận các tham số được bộ phận lễ tân truyền vào rất đơn giản, chỉ cần tên tham số trùng khớp với tên trong biểu mẫu bộ phận lễ tân, tôi đã làm ví dụ về tải tệp lên, bạn hãy xem trang lễ tân của mình. .
?
1
2
3
4
5
6
7
8
9
10
|
<
thân hình
>
<
hình thức
hoạt động
=
"tải lên tập tin thử nghiệm"
phương pháp
=
"bưu kiện"
kiểu mã hóa
=
"nhiều phần/dữ liệu biểu mẫu"
>
Tập tin: <
đầu vào
kiểu
=
"tài liệu"
tên
=
"tài liệu"
/>
Mô tả: <
đầu vào
kiểu
=
"chữ"
tên
=
"mô tả"
/>
<
đầu vào
kiểu
=
"nộp"
giá trị
=
"Nộp"
/>
hình thức
>
<
anh
><
anh
>
<
Một
href
=
"emps"
quan hệ
=
"nofollow bên ngoài"
>Liệt kê tất cả nhân viên
Một
>
thân hình
>
|
Dưới đây là bộ điều khiển của SpringMvc.
?
1
2
3
4
5
6
7
8
9
10
11
|
@Bộ điều khiển
công cộng
lớp học
mùa xuân MVCTest {
@Yêu cầu lập bản đồ
(
"/testFileUpload"
)
công cộng
Chuỗi testFileUpload(
@Yêu cầuParam
(
"mô tả"
) Chuỗi desc,
@Yêu cầuParam
(
"tài liệu"
) Tệp MultipartFile)
ném
Ngoại lệ IO {
Hệ thống.out.println(
"mô tả: "
+ mô tả);
Hệ thống.out.println(
"Tên tệp gốc: "
+ file.getOriginalFilename());
Hệ thống.out.println(
"luồng đầu vào: "
+ file. getInputStream());
trở lại
"thành công"
;
}
}
|
Tiếp theo là tệp web.xml.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<
dịch vụ
>
<
tên servlet
>springDispatcherServlet
tên servlet
>
<
lớp servlet
>org.springframework.web.servlet.DispatcherServlet
lớp servlet
>
<
thông số nhiệt
>
<
tên tham số
>contextConfigVị trí
tên tham số
>
<
giá trị tham số
>đường dẫn lớp: springmvc.xml
giá trị tham số
>
thông số nhiệt
>
<
tải khi khởi động
>1
tải khi khởi động
>
dịch vụ
>
<
ánh xạ servlet
>
<
tên servlet
>springDispatcherServlet
tên servlet
>
<
mẫu url
>/
mẫu url
>
ánh xạ servlet
>
|
**Sau đó là tệp cấu hình SpringMvc**.
?
1
2
3
4
5
6
7
8
9
|
<
ngữ cảnh: quét thành phần
gói cơ sở
=
"com.zgz.springmvc.crud"
>
ngữ cảnh: quét thành phần
>
<
ngữ cảnh: quét thành phần
gói cơ sở
=
"com.zgz.springmvc.test"
>
ngữ cảnh: quét thành phần
>
<
đậu
lớp học
=
"org.springframework.web.servlet.view.InternalResourceViewResolver"
>
<
tài sản
tên
=
"tiền tố"
giá trị
=
"/WEB-INF/lượt xem/"
>
tài sản
>
<
tài sản
tên
=
"hậu tố"
giá trị
=
".jsp"
>
tài sản
>
đậu
>
|
Sau đó, hố đã xuất hiện. Vì đây là một tệp tải lên nên tôi cần thêm multipartResolver vào tệp cấu hình Spring MVC. Vì vậy, tôi đã thêm đoạn mã sau:
?
1
2
3
4
5
6
|
<
đậu
nhận dạng
=
"commonsMultipartResolver"
lớp học
=
"org.springframework.web.multipart.commons.CommonsMultipartResolver"
>
<
tài sản
tên
=
"mã hóa mặc định"
giá trị
=
"UTF-8"
>
tài sản
>
<
tài sản
tên
=
"Kích thước tải lên tối đa"
giá trị
=
"1024000"
>
tài sản
>
đậu
>
|
Sau đó, một hố xuất hiện. Sau nhiều rắc rối, tôi phát hiện ra rằng id được viết sai, id="multipartResolver", và mã được sửa đổi là:
?
1
2
3
4
5
|
<
đậu
nhận dạng
=
"multipartResolver"
lớp học
=
"org.springframework.web.multipart.commons.CommonsMultipartResolver"
>
<
tài sản
tên
=
"mã hóa mặc định"
giá trị
=
"UTF-8"
>
tài sản
>
<
tài sản
tên
=
"Kích thước tải lên tối đa"
giá trị
=
"1024000"
>
tài sản
>
đậu
>
|
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/qq_40406929/article/details/114733221.
Cuối cùng, bài viết này về tổng hợp 4 cách SpringMVC nhận tham số được truyền bởi front end kết thúc tại đây. hoặc tiếp tục Duyệt qua 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!