使用Spring MVC拦截所有请求时,如果设置如下:
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springServlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
会发现返回404错误,原因是DispatcherServlet把返回的视图路径如:/view/index.jsp当作一个请求被dispatcherServlet拦截,所以会抛出异常。
解决方法如下:
1.让DispatcherServlet拦截指定后缀,如*.do
2.在springServlet.xml文件中添加servlet:
<mvc:default-servlet-handler/>
default-servlet-handler简介:
它会对进入 DispatcherServlet 的请求进行筛选,如果发现是没有经过映射处理的请求,将该请求交由 WEB 应用服务器默认的Servlet处理。 如果不是静态资源的请求, 才由 DispatcherServlet 继续处理 ,一般 WEB 应用服务器默认的 Servlet 的名称都是 default。
若所使用的WEB 服务器默认的Servlet 名称不是default, 则需要通过default-servlet-name 属性显式指定。
此外,还需配置annotation-driven:
<mvc:annotation-driven></mvc:annotation-driven>
参考
http://blog.sina.com.cn/s/blog_534f69a00101332u.html
http://blog.csdn.net/bug_moving/article/details/53125647
http://www.cnblogs.com/yangzhilong/p/3725849.html