是否可以使用JSP / JSTL生成动态css / javascript文件?

如果是这样,你怎么做?

(jboss / tomact embedded / jdk 1.5)

没有嵌入js / css但是实际文件…

您要做的是将* .css servlet映射分配给JSPServlet。

在大多数容器中,您将看到这样的映射(这是来自Glassfish,在它的default-web.xml中):

 jsp org.apache.jasper.servlet.JspServlet  xpoweredBy true  3   jsp *.jsp  

这里,它声明了JSP servlet,并将“* .jsp”映射到它。 因此,在这种情况下,JSP servlet引用名称只是’jsp’。

所以你想要添加:

  jsp *.css  

当你这样做时,“突然”你的所有CSS文件实际上都是JSP,所以无论你想要什么,你都可以使用它们。

细节是我不知道’jsp’对于所有容器是否相同,因此您的web.xml可能不可移植。

但这就是你想要做的事情的要点。 如果您不希望所有CSS都是JSP,则可以将这些文件放在它们自己的目录中,并将其映射到JSP servlet。 那么你放入的任何东西都会有一个JSP(css,js等)

你当然可以。 您需要做的只是设置适当的内容类型。

 <%@page contentType="text/javascript" %> 

要么

 <%@page contentType="text/css" %> 

请注意以下事实: 某些 webbrowser可能对实际请求URL中使用的文件扩展名很挑剔。 我从来没有尝试过,因为我通常会将Servlet用于这些目的,但如果特别是MSIE不会吃掉它,我也不会感到惊讶。

当然,JSP可以输出您需要的任何必要文本(X)HTML或CSS或JavaScript代码。 我经常为ERP自定义执行此操作,在每个页面的末尾注入一个javascript脚本,并通过其加载的上下文能够在不触及底层应用程序的情况下操作页面上的必要数据字段。

在glassfish 3.1上,您可能需要添加以下内容:

  jsp org.apache.jasper.servlet.JspServlet  xpoweredBy true  3 

接着

   jsp *.myext *.jsp  

对于您的web.xml,如果没有,您可能会遇到“java.lang.RuntimeException:此处没有默认名称的Web组件。”错误