2009-11-12 52 views
4

如果是的话,你如何做到这一点?是否可以使用JSP/JSTL来生成动态的css/javascript文件?

(JBoss的/ tomact嵌入式/ JDK 1.5)

没有嵌入JS/CSS,但实际的文件...

+0

但我希望它像一个普通的javasc ript或css文件(例如发送标题等) – qodeninja 2009-11-12 23:15:17

+0

你能回答这个问题吗?像这样的东西。 [http:// stackoverflow。COM /问题/ 14243065/JSP功能标签至替换/ 14245423#comment19786651_14245423] [1] [1]:http://stackoverflow.com/questions/14243065/jsp-function-tag -to-replace/14245423#comment19786651_14245423 – 2013-01-10 12:37:18

回答

5

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

在大多数容器中,你会看到这样的映射(这是从Glassfish的,在它的默认-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> 

当你做到这一点,“突然” ALL你的CSS文件是,有效,JSP页面,这样你就可以与他们做任何你想要的。

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

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

+0

优秀的反馈! – qodeninja 2009-11-12 23:54:49

+0

第二眼这是我正在寻找的东西 – qodeninja 2012-09-21 16:34:20

2

当然,JSP可以输出你需要的任何必要的文字是(X)HTML或CSS或JavaScript代码。我经常为ERP自定义做这些工作,在每个页面的末尾注入一个JavaScript脚本,并通过它加载的上下文能够在页面上操作必要的数据字段,而无需触摸底层应用程序。

10

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

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

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

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

+0

hmm Servlet eh ?? – qodeninja 2009-11-12 23:44:07

+0

@amvx:这是学习JSP后的下一步:) – BalusC 2009-11-12 23:44:54

1

在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组件。”错误

相关问题