2008-11-17 56 views
1

我用我web.xml文件中的以下Servlet映射CSS和JS:條形圖像,從Servlet映射

<servlet> 
    <servlet-name>PostController</servlet-name> 
    <servlet-class>com.webcodei.controller.PostController</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>PostController</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

做某種類型的搜索。例如:

http://www.myweb.com/The search string here

但問題是,CSS,JS和圖片都像一個搜索請求處理。

有什麼模式可以去除* .css,* .js,* .gif等,所以請求不需要通過我的控制器?

太感謝你了,再見!

回答

2

兩個選項浮現在腦海中:

1)通常情況下,在這樣的web應用程序,由一個servlet處理的「行動」的網址,被給予任何一個子目錄,如「/actions/*」或給出像「*.action」或「*.do」這樣的擴展名(這是Struts所做的)。這樣就清楚了哪些URL是針對servlet的。這更多的是一個包容性的解決方案,而不是你要求的獨家解決方案,但我不認爲你想要的是可能的。

2)稍微冒險的選擇是在apache安裝後面設置您的web應用服務器,該服務將圖像,css等作爲平面文件提供,僅將其他所有內容發送到應用服務器。通常,這樣做是爲了減輕應用服務器的負擔。它會要求你將所有這些文件複製到apache的separete目錄中進行處理。

1

而不是黑名單某些擴展,你可以考慮在白名單網址模式,達到你的servlet PostController的替代。例如:

<servlet> 
    <servlet-name>PostController</servlet-name> 
    <servlet-class>com.webcodei.controller.PostController</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>PostController</servlet-name> 
    <url-pattern>/*.jsp</url-pattern> 
</servlet-mapping> 

如果您使用簡單的JSP。現在,對具有* .css,*。gif等擴展名的文件的HTTP GET請求將不會通過此servlet進行路由。

由於提問指出,還有更多的網址,不應該通過該控制器比其他路由。

0

Jetty正如您所期望的那樣解釋web.xml。最近,當我將應用程序從jetty移至tomcat時,我暴露了這個問題,並且突然間看不到我的靜態資源。非常令人沮喪。