2012-05-08 57 views
7

是否有可能告訴標準Java EE servlet容器將文件解釋並呈現爲JSP,即使它沒有擴展名爲.jsp?您可以將不帶.jsp擴展名的文件呈現爲JSP嗎?

假設我在我的WAR的根目錄下有一個名爲foo.xyz的文件。該文件包含一些jstl邏輯,就像您在.jsp文件中所期望的那樣。如果我請求http://myserver/myapp/foo.xyz,我會看到該文件中的文字代碼呈現爲文本。有沒有一種方法來配置Web應用程序,使其使用JSP解釋器呈現文件而不更改文件擴展名?

請不要問我爲什麼要這樣做。約束是複雜的。

回答

5

將該URL模式的JSP servlet映射添加到您的webapp的web.xml

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

注意,這個假設servletcontainer自己的JSP Servlet與的jsp servlet名稱這是JSP的servlet的事實上的標準servlet名稱註冊。確認servletcontainer自己的web.xml中的<servlet>條目是確定的。例如Tomcat,這是其安裝文件夾中的/conf/web.xml文件。

+0

該解決方案在Tomcat上工作,但不在Websphere上。我認爲這是一個黑客而不是*事實標準*。 – LaurentG

+0

@LaurentG:答案已經涵蓋了。只要使用與Websphere本身使用的相同的''。 – BalusC

+0

由於我正在使用Tomcat進行開發並在Websphere上進行部署,因此我認爲我提出的最通用的解決方案更好(我不想管理兩個web.xml)。但對於最常見的情況,您的解決方案也很好。 – LaurentG

8

您可以在web.xml添加以下配置,以與.xyz beeing處理爲JSP結尾的文件:

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

該解決方案正在使用Tomcat和Websphere。並可能與任何JEE兼容的服務器容器。