2013-03-01 64 views
1

已經搜索並沒有找到確切的答案。Spring MVC - 通用HTTP處理程序

我試圖路由所有http請求通過我的調度程序servlet,然後到特定的控制器。最終,我希望能夠通過中心點處理資源,AJAX和其他請求。

我目前有URL映射/ *到位來做到這一點。我的控制器使用@RequestMapping(「/ [My resource]。*」)來捕獲我的.htm請求。不幸的是,Spring似乎使用RequestDispactcher.forward來解析來自InternalResourceViewResolver的.jsp,然後再次碰到前端控制器並最終導致404錯誤。

我的問題是,我能夠設置一個通用的捕獲所有將處理除常規視圖請求以外的任何HTTP請求嗎?

HTTP處理程序必須能夠將請求傳遞到其他服務器並解析內部和外部資源,例如圖片,CSS等

問候, 安迪

問候

回答

1

一想到一個更好的主意是的DispatcherServlet的servlet的映射更改爲/,而不是/*,這是因爲/*使所有的請求都到這個servlet,而不是像你已經找到了jsp轉發,儘管jsps有一個JSPServlet映射,但另一方面,/映射將默認爲只有在沒有找到特定的映射請求的路徑。

+0

如果我想要通過DispatcherServlet發送所有請求,該怎麼辦?我想讓它像這樣流動1.檢查我是否有資源映射控制器,如果不是控制器檢查它是否是Ajax請求,則不檢查默認Servlet是否爲靜態資源。 – Andy 2013-03-01 15:04:57

+0

'/'的servlet映射將完全實現 - 只需記住添加一個''來處理webapp根目錄中的靜態資源。 – 2013-03-01 15:10:34

+0

不確定是否版本3.2是越野車,但如果我包括默認的servlet處理程序,我得到404錯誤,因爲它假定我使用SimpleUrlHandlerMapper,並且找不到匹配項。如果我在Servlet上下文中添加DefaultAnnotationHandlerMapper,我會得到一個500錯誤,指出「沒有適配器處理程序..」等非常令人沮喪..! – Andy 2013-03-01 16:43:28

0

將應用程序servlet映射到/在web.xml中。如下所示。

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

要解析其他資源,請在調度程序servlet xml中添加以下標記。 這裏資源是包含js,css,圖像的文件夾。它存儲在Maven Web應用程序結構中的Webcontent文件夾下。根據您的項目結構進行更改。

<resources mapping="/resources/**" location="/resources/" /> 

試試這個。