2009-11-12 39 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組件。」錯誤

相關問題