2012-01-24 33 views
28

Tôi cần ánh xạ cùng một servlet trên hai url khác nhau. Tôi đã sử dụng netbeans 7.0.1 để quản lý toàn bộ dự án của mình, vì vậy tôi đã sử dụng giao diện thân thiện của nó để sửa đổi tệp web.xml. Có gì netbeans tạo là thế này:nhiều url-mẫu cho cùng một servlet

<servlet-mapping> 
    <servlet-name>fred</servlet-name> 
    <url-pattern>*.jsp</url-pattern> 
    <url-pattern>/url</url-pattern> 
</servlet-mapping> 

này được đọc bởi tomcat 5,5 mà không phát ra bất kỳ lỗi, nhưng chỉ có các mô hình thứ hai hoạt động, trong khi người đầu tiên được bỏ qua.

Googling tôi thấy rằng đúng cách cho tomcat là một trong những điều này:

<servlet-mapping> 
    <servlet-name>fred</servlet-name> 
    <url-pattern>*.jsp</url-pattern> 
</servlet-mapping> 
<servlet-mapping> 
    <servlet-name>fred</servlet-name> 
    <url-pattern>/url</url-pattern> 
</servlet-mapping> 

Vì vậy, câu hỏi của tôi: đây là một nhưng trong tomcat? Cú pháp nào đang chấp nhận các vùng chứa khác?

Cảm ơn, Giuseppe

Trả lời

39

Tôi đoán nó có nhiều việc phải làm với servlet đặc tả container/netbeans đang sử dụng chứ không phải là một vấn đề với container. Hạt net của bạn dường như đang sử dụng spec 2.5 để xây dựng bản đồ servlet và do đó bạn nhận được

<servlet-mapping> 
    <servlet-name>fred</servlet-name> 
    <url-pattern>*.jsp</url-pattern> 
    <url-pattern>/url</url-pattern> 
</servlet-mapping> 

Đọc thêm về điều này here. Nó nói

Các phiên bản trước của giản đồ servlet chỉ cho phép một url-pattern duy nhất trong một bộ lọc lọc mapping.For ánh xạ tới nhiều URL kết quả này trong không cần lặp lại của khoản lập bản đồ tổng thể.

+0

Tôi sẽ nói rằng ít nhất phải cung cấp một lỗi nếu nó đang sử dụng thông số cũ (2.4) và không chấp nhận cú pháp mới. Hoặc netbeans nên sử dụng cú pháp cũ để có một web.xml tương thích. Phải không? Các container mới có chấp nhận cú pháp cũ với nhiều stanzas bản đồ servlet không? – eppesuig

+1

@eppesuig Tôi khá chắc chắn hầu hết trong số họ là tương thích ngược :) và 2.5 servlet spec XSD chắc chắn cho phép điều đó. –

+0

@eppesuig Nếu bạn hài lòng với câu trả lời bạn có thể chấp nhận, hãy nhấp vào dấu chọn bên cạnh câu hỏi và/hoặc bạn có thể bỏ phiếu cho câu trả lời nếu điều này đã giúp bạn bằng bất kỳ cách nào. Chấp nhận câu trả lời sẽ nâng cao danh tiếng của bạn trong diễn đàn này. –

1

Tomcat container sẽ hỗ trợ 3 mẫu url:

  1. nhân vật hoàn chỉnh chuỗi
  2. /*
  3. *. ext (sao có nghĩa là bất cứ điều gì)

/* được khuyến cáo chỉ có một duy nhất cho khung

nếu bạn sử dụng nhiều khung sau đó được đề xuất .*

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