CFSDN nhấn mạnh vào việc tạo ra giá trị thông qua mã nguồn mở. Chúng tôi cam kết xây dựng một nền tảng chia sẻ tài nguyên để mọi người làm CNTT có thể tìm thấy thế giới tuyệt vời của riêng mình tại đây.
Bài đăng trên blog CFSDN này giải quyết vấn đề cắt bớt @PathVariable cho các ký tự đặc biệt. Bài đăng được tác giả thu thập 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ó.
Tổng quan:
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
hai mươi mốt
hai mươi hai
hai mươi ba
hai mươi bốn
25
26
|
@Phản hồi cơ thể
@Yêu cầu lập bản đồ
(giá trị=
"/download/{tên tệp:[a-zA-Z0-9\\.\\-\\_]+}"
, phương thức = RequestMethod.GET)
công cộng
vô hiệu
downloadAmr(yêu cầu HttpServletRequest, phản hồi HttpServletResponse,
@Biến Đường Dẫn
(
"tên tệp"
) Chuỗi fileName) {
phản hồi.setContentType(
"ứng dụng/octet-stream"
);
Chuỗi dir = System.getProperty(
"catalina.home"
);
Hệ thống.out.println(
"đường dẫn tomcat="
+ đạo diễn);
Chuỗi dir2 = dir.substring(
0
, dir.length()) + File.separator +
"ứng dụng web"
+ File.separator +
"GỐC"
+ File.separator + fileName;
Tập tin tập tin =
mới
Tập tin(dir2);
Dòng đầu ra ByteArray byteArrayOutputStream =
mới
Dòng đầu ra ByteArray();
byte
[] bộ đệm =
mới
byte
[
1024
];
số nguyên
len;
thử
{
Dòng đầu vào Dòng đầu vào =
mới
FileInputStream(tệp);
trong khi
((len = inputStream.read(bộ đệm)) > -
1
) {
byteArrayOutputStream.write(bộ đệm,
0
, len);
}
byteArrayOutputStream. flush();
phản hồi.getOutputStream().write(byteArrayOutputStream.toByteArray());
}
nắm lấy
(FileNotFoundException e) {
logger. lỗi(
"Ngoại lệ đọc tệp"
, đ);
}
nắm lấy
(IOException e) {
logger.error(e.getMessage(), e);
}
logger. thông tin(
"Tải xuống và nhập..."
);
}
|
Tóm tắt:
1. Theo mặc định, /download/{fileName}, sau đó là @PathVariable("fileName").
Nếu đường dẫn là /download/1.jpg, thì fileName=1 thay vì 1.jpg. Vấn đề là các ký tự ._- bị cắt bớt theo mặc định.
2. Giải pháp là.
{tên tệp:[a-zA-Z0-9\\.\\-\\_]+} .
Sử dụng biểu thức chính quy để chỉ ra rằng các ký tự này không thể bị cắt bớt.
Bổ sung: Springboot sử dụng @PathVariable để truyền tham số và tham số cuối cùng sẽ mất phần sau dấu thập phân.
Khi sử dụng @PathVariable để truyền tham số đường dẫn, người ta phát hiện ra rằng phần sau dấu thập phân của tham số cuối cùng bị thiếu, như được hiển thị trong đoạn mã sau:
Phương pháp Controller được chú thích như sau:
?
1
|
@Yêu cầu lập bản đồ
(giá trị =
"/người dùng/tìm mật khẩu/{email}"
, phương thức = RequestMethod.GET, tạo ra =
"ứng dụng/json"
)
|
Tôi muốn gửi email ở đây, nhưng sau đó tôi phát hiện ra rằng không có hậu tố email.
Tôi không thể hiểu được nên đã tìm kiếm trên Baidu và thấy giải pháp như sau:
?
1
|
@Yêu cầu lập bản đồ
(giá trị =
"/người dùng/tìm mật khẩu/{email:.+}"
, phương thức = RequestMethod.GET, tạo ra =
"ứng dụng/json"
)
|
Thêm dấu hai chấm, dấu thập phân và dấu cộng sau tham số: {email:.+}.
Trên đây là kinh nghiệm cá nhân của tôi, hy vọng có thể cung cấp cho bạn một tài liệu tham khảo. Tôi cũng hy vọng bạn sẽ ủng hộ tôi. Nếu có bất kỳ sai sót hoặc cân nhắc nào chưa đầy đủ, xin vui lòng cho tôi biết.
Liên kết gốc: https://blog.csdn.net/m0_37355951/article/details/77113621.
Cuối cùng, bài viết này về giải quyết vấn đề cắt bớt ký tự đặc biệt của @PathVariable kết thúc tại đây. Nếu bạn muốn biết thêm về giải quyết vấn đề cắt bớt ký tự đặc biệt của @PathVariable, vui lòng tìm kiếm các bài viết của 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!