今天在做测试Sprin MVC使用Restful风格时,对静态资源(JS,CSS,IMG等)的访问时,取得不到资源,在网上找了很多方法,有可以的,也有不可以的,我把自己测试的结果总结一下:
首先,支持Restful风格时,在web.xml中需要配置如下:
<servlet>
<servlet-name>springmvc_rest</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc_rest</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
- 在controller中没有@RequestMapping("/user")时,配置如下:
springmvc.xml:
<mvc:resources location="/static/js/" mapping="/static/js/**"/>
jsp页面中代码如下:
访问方式过程:url访问action,action转发到jsp页面(不是直接访问jsp文件)
- 在controller中存在@RequestMapping("/user")时,在转发到jsp时,取得静态文件的路径中总是存在http://localhost:8080/项目名称/user/static/js/user.js,导致返回404状态,需要修改为如下:
访问结果如下:
另外:对于controller中没有@RequestMapping中情况,也可以使用如下方法:
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.css</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>*.gif</url-pattern>
</servlet-mapping>
<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>
这种方式不需要修改spring-mvc.xml中内容。
对于网上说的这种方式,我没有测试成功,有测试成功个朋友,给个留言: