2012-05-08 25 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兼容的服务器容器。