我正在开发一个部署在最新Glassfish服务器上的Web应用程序。
为了使应用程序与不同的上下文根兼容(例如“/ apps / myapp /”),我需要动态生成其中的CSS文件。
问题是这些页面不像JSP文件那样处理,所以我不能使用<%= contextRoot %>
。我知道我可以使用带有Content-Type标头的JSP文件来模仿CSS文件,但我希望在其上有一个CSS扩展。
是否可以让Glassfish将非JSP文件视为JSP文件?
答案 0 :(得分: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>
如果没有标记,或者你自己添加标记的自定义CSS文件,这对于直接的CSS文件非常有用。
答案 1 :(得分:0)
如果你没有太多的CSS文件可以使用,你可以为每个CSS文件添加一个servlet映射,它将重定向到一个servlet并呈现JSP。
答案 2 :(得分:0)
我不知道你想要完成的事情是非常必要的。您可以使用scriptlets或jstl在链接到CSS,JS,图像等时动态附加上下文根。
你可以在这里看到关于它的讨论:
答案 3 :(得分:0)
您可以使用jsp include指令。
<%@ include file="something.css" %>
<%@ include file="something.xyz" %>