38
<servlet> 
    <servlet-name>myservlet</servlet-name> 
    <servlet-class>workflow.WDispatcher</servlet-class> 
    <load-on-startup>2</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>myservlet</servlet-name> 
    <url-pattern>*NEXTEVENT*</url-pattern> 
</servlet-mapping> 

Phía trên là đoạn mã từ Tomcat's web.xml. Mẫu URL *NEXTEVENT* trên khởi động némjava.lang.IllegalArgumentException: Invalid <url-pattern> trong ánh xạ servlet

java.lang.IllegalArgumentException: Invalid < url-pattern> trong bản đồ servlet

Nó sẽ được đánh giá cao nếu ai đó có thể ám chỉ lỗi.

Trả lời

89
<url-pattern>*NEXTEVENT*</url-pattern> 

Mẫu URL không hợp lệ. Nó có thể kết thúc bằng dấu hoa thị hoặc bắt đầu bằng dấu hoa thị (để biểu thị ánh xạ mở rộng tệp).

Url-pattern đặc điểm kỹ thuật:

  • Một chuỗi bắt đầu bằng một ‘/’ nhân vật và kết thúc bằng một ‘/ *’ hậu tố được sử dụng để lập bản đồ đường đi.
  • Chuỗi bắt đầu bằng tiền tố ‘*.’ Được sử dụng làm phần mở rộng ánh xạ.
  • Chuỗi chỉ chứa ký tự '/' cho biết "servlet" mặc định là của ứng dụng. Trong trường hợp này trường hợp đường dẫn servlet là yêu cầu URI trừ đường dẫn ngữ cảnh và thông tin đường dẫn là rỗng.
  • Tất cả các chuỗi khác chỉ được sử dụng để đối sánh chính xác.

Xem phần 12.2 của Java Servlet Specification Phiên bản 3.1 để biết thêm chi tiết.

+3

Đây là giải thích tốt về ánh xạ servlet: http://javapapers.com/servlet/what-is-servlet-mapping/ – ripper234

1

Giải pháp thay thế có thể đạt được điều đó là thêm bộ lọc servlet để ghi lại URL, ví dụ: viết lại TIẾP THEO tới/TIẾP TỤC/(cái trước NEXTEVENT)/ (cái sau NEXTEVENT) hoặc nội dung tương tự.

Các vấn đề liên quan