2011-09-16 45 views
6

Tôi cần phân phối ứng dụng chính của mình bằng mẫu url "/*" để mẫu này khớp với một Servlet. Vấn đề tôi đang gặp bây giờ là tất cả các tệp và hình ảnh css có tại "/css/all.css", "/ images /" vv đang trải qua Servlet này, điều không mong muốn. Tôi muốn các tệp này được truy cập trực tiếp. Cách nào tốt hơn để xử lý tình huống này?Làm cách nào để loại trừ/chuyển hướng mẫu url nhất định trong mô-đun web.xml hoặc Guice servlet?

Lưu ý: Tôi đang sử dụng Mô-đun Servlet của Guice để định cấu hình các mẫu.

Cảm ơn!

+0

[. Tôi không nghĩ rằng '/ *' là mẫu bạn muốn bắt đầu với] (http://stackoverflow.com/q/7447885/399649) –

Trả lời

5

Chúng tôi cần biết cụ thể những yêu cầu nào nên được chuyển đến servlet của bạn để chúng tôi biết cách viết mã các quy tắc. Tôi không thể nói liệu a) tất cả các yêu cầu ngoại trừ CSS và hình ảnh sẽ được gửi đến servlet của bạn, hoặc b) servlet của bạn chỉ nên xử lý các yêu cầu đến một tập hợp các thư mục/thư mục cụ thể. Bạn có thể sẽ muốn làm một trong hai điều:

Loại trừ các thư mục cụ thể:

^/(?!css|images).* 

Hoặc bao gồm các thư mục cụ thể:

^/myservlet/.* 

Bạn nên thay đổi những * biểu tượng để + nếu, như bạn được chỉ ra trong câu hỏi trước đó của bạn, bạn muốn yêu cầu ít nhất một ký tự sau / trong mẫu.

+0

Cảm ơn ! Tôi đã cố gắng sử dụng bộ lọc để đạt được điều này nhưng điều này là thanh lịch hơn! – Mayumi

+2

Lưu ý rằng điều này chỉ áp dụng cho Guice chứ không áp dụng cho tệp web.xml được đề cập trong tiêu đề câu hỏi. Web.xml 'url-pattern' chỉ hỗ trợ cho các ký tự đại diện đơn giản và đường dẫn mở rộng:'/* 'và'. * ' – Kapep

0

này nên làm việc cho bạn:

Làm cho tất cả hình ảnh của bạn/nguồn css vv đi qua default servlet. Và thực hiện một bản đồ như thế này:

<servlet-mapping> 
    <servlet-name>default</servlet-name> 
    <url-pattern>*.xml</url-pattern> 
    <url-pattern>*.html</url-pattern> 
    <url-pattern>*.png</url-pattern> 
    <url-pattern>*.jpg</url-pattern> 
    <url-pattern>*.gif</url-pattern> 
    <url-pattern>*.js</url-pattern> 
    <url-pattern>*.css</url-pattern> 
</servlet-mapping> 
Các vấn đề liên quan