Spring mvc web.xml中 urlpatten的配置问题

在使用spring mvc 是我们会配置spring 的DispatcherServlet作为请求的转发器。

<servlet>
    <servlet-name>spring</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
   <servlet-name>spring</servlet-name>
   <url-pattern>/</url-pattern>
</servlet-mapping>

这里url-pattern 是设置可以处理的请求路径模式。我遇到一个问题就是当我把url-pattern设置为 /* 时我的请求就总是报出

HTTP Status 404 -的错误。a

后台也访问到了我的Controller 但是在返回ModeAndView 时我指定的 页面 却找不到了。

ffffffff

九月 29, 2016 11:19:31 下午 org.springframework.web.servlet.PageNotFound noHandlerFound

警告: No mapping found for HTTP request with URI [/SpringMvcDemo/WEB-INF/jsp/hello.jsp] in DispatcherServlet with name 'spring'

fffffff是我的请求到了controller的输出。 hello 是设置的view 名称。在我的WEB-INFO/jsp 目录下也确实存在hello.jsp 文件。

经查阅网络找到问题所在:

原来,关键就在于url-pattern的设置:
当是<url-pattern>/</url-pattern>  会匹配到/hello这样的路径型url,不会匹配到模式为*.jsp这样的后缀型url
当是<url-pattern>/*</url-pattern> 会匹配所有url:路径的url和后缀型的url(包括/hello,*.jsp,*.js和*.html等)

所以,当时/*时 请求过来的url其实已经找到了,但是当显示jsp时却被再次拦截当做请求处理了一次,这次就找不到hello.jsp对应的访问controller了。所以改成 / 就OK 了。

写博----记人生,即人生
原文地址:https://www.cnblogs.com/sane/p/5922371.html