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

标签 java jsp glassfish

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

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

问题是这些页面没有像 JSP 文件一样处理,所以我不能使用 <%= contextRoot %> .我知道我可以使用带有 Content-Type header 的 JSP 文件来模拟 CSS 文件,但我更愿意在其上添加 CSS 扩展。

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

最佳答案

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

只需获取您要映射的扩展,并将其映射到 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>

好处是,如果其中没有标记,这对于直接的 CSS 文件非常有效,或者对于您也添加标记的自定义文件。

关于java - 如何使用 JSP 生成具有非 JSP 扩展名的内容页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5215925/

相关文章:

jsp - Jetty 在使用 Jersey-Guice-Shiro 栈时找不到 login.jsp

java - 无法上传大文件

java - 导入后 Eclipse 无法解析为类型

java - Spring 应用程序根变量

struts2 - 在 Glassfish 中部署 Struts 2 和 Jersey

java - 如何解释 Java 线程堆栈?

Glassfish 钩

java - 如何检查两个字符串数组是否相同

java - 如何将 Pdf View 从 Spring 返回到 angularjs

java - 非阻塞匹配器查找