2013-07-05 118 views
2

我是servlets和Velocity模板的新手,我試圖將我的.vm模板鏈接到.css文件。 .vm文件和css文件位於Tomcat的ROOT目錄中。文件本身顯示正常,但CSS不起作用。從Velocity模板鏈接到css文件

下面的鏈接不起作用:

<link rel="stylesheet" type="text/css" href="style.css"/> 

也不傳遞的文件名作爲屬性:

String stylesheet = "style.css"; 
req.setAttribute("stylesheet", stylesheet); 

然後引用作爲這樣:

<link rel="stylesheet" type="text/css" href="$stylesheet"/> 

此外,我無法在瀏覽器中顯示CSS文件,即使它絕對存在。

web.xml文件包含以下內容:

<!-- register servlet --> 
<servlet> 
    <servlet-name>testvmservlet</servlet-name> 
    <servlet-class>net.myapp.app.TestVMServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>testvmservlet</servlet-name> 
    <url-pattern>/velocity.service</url-pattern> 
</servlet-mapping> 

<!-- mapping all .vm files to velocity servlets --> 
<servlet> 
    <servlet-name>velocity</servlet-name> 
    <servlet-class>org.apache.velocity.tools.view.servlet.VelocityViewServlet</servlet-class> 

</servlet> 
<servlet-mapping> 
    <servlet-name>velocity</servlet-name> 
    <url-pattern>*.vm</url-pattern> 
</servlet-mapping> 

我需要相對的CSS文件的應用程序或相對速度參考?

因爲我已經調整從我的servlet映射的一個:

<servlet-mapping> 
    <servlet-name>startupservlet</servlet-name> 
    <url-pattern>/</url-pattern> 
</servlet-mapping> 

到:

<servlet-mapping> 
    <servlet-name>startupservlet</servlet-name> 
    <url-pattern>/foo</url-pattern> 
</servlet-mapping> 

現在的CSS工作正常。但我不確定爲什麼這個映射完全有效。

據我瞭解<url-pattern>/</url-pattern>只適用其中已經沒有指定路徑,然而,對於style.css的請求應構成一個路徑?

回答

2

我相信你的問題是servlet映射到/

默認情況下,Tomcat的地圖/它是DefaultServlet供應靜態內容。當你映射/到你的servlet時,它似乎覆蓋整個DefaultServlet行爲。它作爲一個/ *映射,雖然它看起來應該只處理/

我不確定這是一個錯誤還是一個功能。 :)

解決方案可能是將您的/ servlet映射更改爲/ home,然後使用welcome-file映射來引用該映射。