解决:
直接在SpringMVC的xml文件中加一行配置:
<mvc:default-servlet-handler/>
问题根源:
做项目迁移的时候,原来控制层的框架是Struts2,现在要换成SpringMVC,第一版是尽量少改动的移过去,保证功能都正常,第二版开始优化,于是:
原来项目的访问都是XXX.action,现在想用restful风格就在web.xml中,将DispatcherServlet对应的*.action改成了/,如下:
改前:<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:spring-mvc-servlet.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>*.action</url-pattern></servlet-mapping>==============================================================================
改后:<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:spring-mvc-servlet.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>
扩展,网上查了,在web.xml中加以下代码,貌似也能解决这个问题
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.jpg</url-pattern>
</servlet-mapping>
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.js</url-pattern>
</servlet-mapping>
<servlet-mapping> <servlet-name>default</servlet-name> <url-pattern>*.css</url-pattern>
</servlet-mapping>
前提是要写在DispatcherServlet的前面,
让 defaultServlet先拦截请求,这样请求就不会进入Spring了,
这个的原理其实是在SpringMVC的上层,使用tomcat自带默认的servlet名字default,就行了