如何使用 JSP 生成具有非 JSP 扩展名的内容页面?
我正在开发一个要部署在最新 Glassfish 服务器上的 Web 应用程序。
为了使应用程序与不同的上下文根(例如“/apps/myapp/”)兼容,我需要动态生成其中的 CSS 文件。
问题是这些页面不被视为 JSP 文件,因此我无法使用 <%= contextRoot %>
。我知道我可以使用带有 Content-Type 标头的 JSP 文件来模拟 CSS 文件,但我更喜欢在其上添加 CSS 扩展。
Glassfish 是否可以将非 JSP 文件视为 JSP 文件?
I'm developing a web application to be deployed on the latest Glassfish server.
To make the application compatible with different context roots (like "/apps/myapp/"), I need the CSS files in it to be generated dynamically.
The problem is that the these pages aren't treated like JSP files so I can't use <%= contextRoot %>
. I know I could use a JSP file with a Content-Type header to mimic a CSS file, but I would prefer to have a CSS extension on it.
Is it possible to have Glassfish treat a non-JSP file as a JSP file?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
这个很简单,我以前做过,效果很好。
只需获取您想要映射的扩展名,并将其映射到 JSP servlet 即可。
与其他处理一样,JSP 由 servlet 处理。他们没什么特别的。
因此,对于 Glassfish,这个 servlet 恰好被命名为“jsp”。我不知道它是否可移植(即名称),但它可能在 Glassfish 和 Tomcat 中运行,也可能在任何使用 Jasper JSP 编译器的地方运行。
在 Glassfish 中,它在 $glassfish_domain_dir/config/default-web.xml 中定义。
因此,将其添加到您的 web.xml 中
好的一点是,如果其中没有标记,或者对于您也添加标记的自定义文件,这对于直接 CSS 文件非常有效。
This is simple, I've done it before, works great.
Simply take the extension you want to map, and map it to the JSP servlet.
JSPs are processed by a servlet, like anything else. Nothing really special about them.
So, for Glassfish, this servlet happens to be named "jsp". I don't know whether that is portable (i.e. the name), but it likely runs in Glassfish and Tomcat, and probably anyplace that uses the Jasper JSP compiler.
In Glassfish, it's defined in $glassfish_domain_dir/config/default-web.xml.
So, add this to your web.xml
The nice thing that this will pretty much work for straight up CSS files if there's no markup in them, or with custom ones that you add markup too.
如果您没有太多的 CSS 文件可供使用,您可以为每个 CSS 文件添加一个 servlet 映射,该映射将重定向到 servlet 并呈现 JSP。
If you don't have too many CSS files to work with, you could add a servlet mapping for each CSS file which would redirect to a servlet and render the JSP.
我不知道你想要完成的事情是否真的有必要。当链接到 CSS、JS、图像等时,您可以使用 scriptlet 或 jstl 动态附加上下文根。
您可以在此处查看相关讨论:
任何在网络应用程序中处理上下文的巧妙方法?
I don't know that what you are trying to accomplish is really necessary. You could just use scriptlets or jstl to dynamically append the context root when linking to your CSS,JS,images,etc.
You can see a discussion about that here:
Any clever ways of handling the context in a web app?
您可以使用 jsp include 指令。
You could use a jsp include directive.