No mapping found for HTTP request with URI
如:
<!-- dispatcherServlet 配置 -->
<servlet>
<servlet-name>dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/config/dispatcher-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
出现这个问题的原因是:web.xml配置文件中url-pattern配置的是:/*,在controller对视图(index.jsp)进行分发的时候,又被当成一个请求被dispatcher拦截器给拦截了。
解决方式:
1.把/* 改成/*.do,/*.htm等 带后缀形式的。
2.把/* 改成/,在dispatcher-servlet.xml中加上<mvc:annotation-driven/>,<mvc:default-servlet-handler/>(注册web默认Servlet);这样配置,静态资源则交予web服务器默认servlet处理,其他请求由dispatcher处理;这样就不会出现静态资源找不到的问题,且保持了REST完美风格。