Can you render a file without a .jsp extension as

2020-02-13 11:59发布

问题:

Is it possible to tell a standard Java EE servlet container to interpret and render a file as a JSP even if it doesn't have a .jsp extension?

Say I have a file called foo.xyz in the root directory of my WAR. This file contains some jstl logic as you would expect in a .jsp file. If I request http://myserver/myapp/foo.xyz I'm going to see the literal code from that file rendered as text. Is there a way to configure the web app such that it renders the file using the JSP interpreter without changing the files extension?

Please don't ask why I'd want to do this. The constraints are complicated.

回答1:

Add a JSP servlet mapping on that URL pattern to your webapp's web.xml.

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

Note that this assumes that servletcontainer's own JSP servlet is registered with the servlet name of jsp which is the de facto standard servlet name of the JSP servlet. Verify the <servlet> entry inside servletcontainer's own web.xml to be sure. In case of for example Tomcat, that's the /conf/web.xml file in its installation folder.



回答2:

You can add the following configuration in your web.xml to make files ending with .xyz beeing processed as JSP:

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

This solution is working with Tomcat and Websphere. And probably with any JEE compliant server container.