Mùa xuân: Sự khác biệt của / ** và / * liên quan đến đường dẫn


83

Sự khác biệt giữa hai dấu hoa thị thay vì một dấu hoa thị khi chúng ta tham chiếu đến đường dẫn là gì?

Trước đó, tôi đã gỡ lỗi dự án Spring 3 của mình. Tôi đã cố gắng thêm .swf bằng cách sử dụng

<spring:url var="flashy" value="/resources/images/flash.swf"/>

Với ResourceServlet của web.xml của tôi trông giống như

<servlet-name>Resource Servlet </servlet-name>
<url-pattern>/resources/*</url-pattern>

Nhưng thật không may, tôi đã gặp lỗi này:

WARN org.springframework.js.resources.ResourceServlet - An attempt to access a protected resource at /images/flash.swf was disallowed.

Tôi thấy nó thực sự lạ vì tất cả hình ảnh của tôi trong imagesthư mục đều được truy cập nhưng tại sao .swf của tôi lại được "bảo vệ"?

Sau đó, tôi quyết định thay đổi /resources/*thành /resources/**và cuối cùng nó đã hoạt động. Câu hỏi của tôi là ... tại sao?


Bạn có chắc rằng nó /resources/**hoạt động trong <url-pattern>?
axtavt

Xin lưu ý thêm, org.springframework.js.resource.ResourceServlet không được dùng nữa. Từ Hướng dẫn Tham khảo Luồng Web Mùa xuân : "Lưu ý rằng bắt đầu với phiên bản 3.0.4, Khung công tác Mùa xuân bao gồm phần thay thế cho ResourceServlet (xem tài liệu Khung công tác Mùa xuân )."
Informatik01

Câu trả lời:


49

Đây là một mẫu đường dẫn đã được sử dụng trong Apache antSpring team thực hiện nó và sử dụng nó trong toàn bộ khuôn khổ.

Để tham khảo, hãy xem javadoc của AntPathMatcher ( javadoc mới nhất dường như có vấn đề, vì vậy tôi liên kết một cái cũ).

Quay lại vấn đề của bạn, theo tài liệu thì nó chỉ có 3 quy tắc:

  1. ? khớp với một ký tự
  2. * khớp với không hoặc nhiều ký tự
  3. ** khớp với không hoặc nhiều 'thư mục' trong một đường dẫn

1
Có thể *để phù hợp với những gì **không thể?
Alexander Suraphel

3
Lưu ý rằng AntPathMatcher của Springs có lỗi: nó không hoàn toàn phù hợp với Kiểu Ant Pattern. Ví dụ: **/*.csssẽ không hoạt động đối với các đường dẫn bắt đầu bằng a /, trong khi nó phải tuân theo quy ước Ant Style.
Devabc
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.