2013-03-01 65 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/" /> 

试试这个。