【问题标题】:Is it possible to use JSP/JSTL to generate dynamic css/javascript files?是否可以使用 JSP/JSTL 生成动态 css/javascript 文件?
【发布时间】:2010-12-16 02:41:23
【问题描述】:

如果是这样,你如何做到这一点?

(jboss/tomact 嵌入式/jdk 1.5)

不是嵌入的 js/css,而是一个实际的文件...

【问题讨论】:

标签: java javascript css jsp


【解决方案1】:

当然,JSP 可以输出您需要的任何必要文本,例如 (X)HTML 或 CSS 或 JavaScript 代码。我定期为 ERP 定制执行此操作,在每个页面的末尾注入一个 javascript 脚本,并通过它加载的上下文来操作页面上的必要数据字段,而无需触及底层应用程序。

【讨论】:

    【解决方案2】:

    当然可以。您唯一需要做的就是设置适当的内容类型。

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

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

    请注意,一些网络浏览器可能对实际请求 URL 中使用的文件扩展名很挑剔。我从来没有尝试过,因为我通常会使用Servlet 来达到这些目的,但如果特别是 MSIE 不吃它,我不会感到惊讶。

    【讨论】:

      【解决方案3】:

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

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

        <servlet>
          <servlet-name>jsp</servlet-name>
          <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
          <init-param>
            <param-name>xpoweredBy</param-name>
            <param-value>true</param-value>
          </init-param>
          <load-on-startup>3</load-on-startup>
        </servlet>
        <servlet-mapping>
          <servlet-name>jsp</servlet-name>
          <url-pattern>*.jsp</url-pattern>
        </servlet-mapping>
      

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

      所以你想添加:

      <servlet-mapping>
        <servlet-name>jsp</servlet-name>
        <url-pattern>*.css</url-pattern>
      </servlet-mapping>
      

      当您这样做时,“突然”您的所有 CSS 文件实际上都是 JSP,因此您可以随心所欲地使用它们。

      细节是我不知道'jsp'是否对所有容器都相同,所以你的 web.xml 可能不是可移植的。

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

      【讨论】:

      • 第二眼这就是我要找的东西
      【解决方案4】:

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

      <servlet>
      <servlet-name>jsp</servlet-name>
      <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
      <init-param>
        <param-name>xpoweredBy</param-name>
        <param-value>true</param-value>
      </init-param>
      <load-on-startup>3</load-on-startup>
      

      然后

        <servlet-mapping>
          <servlet-name>jsp</servlet-name>
          <url-pattern>*.myext</url-pattern>
          <url-pattern>*.jsp</url-pattern>
      </servlet-mapping>
      

      到你的web.xml,如果没有,你可能会遇到 “java.lang.RuntimeException: 这里没有默认名字的web组件。” 错误

      【讨论】:

        猜你喜欢
        • 2020-03-14
        • 2011-05-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-11-03
        相关资源
        最近更新 更多