2012-05-08 63 views
7

Có thể nói một thùng chứa servlet Java EE tiêu chuẩn để diễn giải và hiển thị tệp dưới dạng JSP ngay cả khi nó không có phần mở rộng .jsp không?Bạn có thể hiển thị tệp không có phần mở rộng .jsp dưới dạng JSP không?

Giả sử tôi có một tệp có tên foo.xyz trong thư mục gốc của WAR của tôi. Tệp này chứa một số logic jstl như bạn mong đợi trong tệp .jsp. Nếu tôi yêu cầu http://myserver/myapp/foo.xyz Tôi sẽ thấy mã theo thứ tự từ tệp đó được hiển thị dưới dạng văn bản. Có cách nào để cấu hình ứng dụng web sao cho nó hiển thị tệp bằng cách sử dụng trình thông dịch JSP mà không thay đổi phần mở rộng tệp?

Vui lòng không hỏi tại sao tôi muốn làm điều này. Các ràng buộc phức tạp.

Trả lời

5

Thêm ánh xạ JSP servlet trên mẫu URL đó vào web.xml của webapp của bạn.

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

Lưu ý rằng điều này giả định rằng JSP servlet riêng servletcontainer được đăng ký với tên servlet của jsp đó là tên servlet tiêu chuẩn de facto của servlet JSP. Xác minh mục nhập <servlet> bên trong số web.xml riêng của servletcontainer để chắc chắn. Trong trường hợp ví dụ Tomcat, đó là tệp /conf/web.xml trong thư mục cài đặt của nó.

+0

Giải pháp này đang hoạt động trên Tomcat nhưng không hoạt động trên Websphere. Tôi nghĩ rằng đây là một hack và không phải là một tiêu chuẩn * de facto *. – LaurentG

+0

@LaurentG: câu trả lời đã bao gồm điều đó. Chỉ cần sử dụng cùng một '' như chính Websphere đang sử dụng. – BalusC

+0

Vì tôi đang phát triển với Tomcat và triển khai trên Websphere, tôi nghĩ giải pháp chung nhất mà tôi đề xuất là tốt hơn (tôi không muốn quản lý hai tệp web.xml). Nhưng đối với trường hợp phổ biến nhất, giải pháp của bạn cũng hoạt động tốt. – LaurentG

8

Bạn có thể thêm các cấu hình sau đây trong web.xml của bạn để làm cho tập tin kết thúc với .xyz beeing xử lý như JSP:

<jsp-config> 
    <jsp-property-group> 
     <url-pattern>*.xyz</url-pattern> 
    </jsp-property-group> 
</jsp-config> 

Giải pháp này đang làm việc với Tomcat và Websphere. Và có thể với bất kỳ thùng chứa máy chủ phù hợp JEE nào.

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