如何使用JSP生成具有非JSP扩展的内容页面?

Chr*_*ehl 4 java jsp glassfish

我正在开发一个部署在最新Glassfish服务器上的Web应用程序.

为了使应用程序与不同的上下文根(例如"/ apps/myapp /")兼容,我需要动态生成其中的CSS文件.

问题是这些页面不像JSP文件那样处理,所以我不能使用<%= contextRoot %>.我知道我可以使用带有Content-Type标头的JSP文件来模仿CSS文件,但我希望在它上面有一个CSS扩展.

是否可以让Glassfish将非JSP文件视为JSP文件?

Wil*_*ung 6

这很简单,我以前做过,效果很好.

只需获取要映射的扩展,并将其映射到JSP servlet.

JSP由servlet处理,就像其他任何东西一样.他们没什么特别的.

因此,对于Glassfish,这个servlet恰好被命名为"jsp".我不知道这是否是可移植的(即名称),但它可能在Glassfish和Tomcat中运行,并且可能在任何使用Jasper JSP编译器的地方运行.

在Glassfish中,它在$ glassfish_domain_dir/config/default-web.xml中定义.

因此,将其添加到您的web.xml

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">    
  <servlet-mapping>
    <servlet-name>jsp</servlet-name>
    <url-pattern>*.css</url-pattern>
  </servlet-mapping>
</web-app>
Run Code Online (Sandbox Code Playgroud)

如果没有标记,或者你自己添加标记的自定义CSS文件,这对于直接的CSS文件非常有用.