SpringMVC不能引入静态资源

问题:部署项目后程序加载或用浏览器访问时出现类似的警告,

2011-01-19 10:52:51,646 WARN [org.springframework.web.servlet.PageNotFound] -<No mapping found for HTTP request with URI [/sandDemo001/images/1.jpg] in DispatcherServlet with name 'spring'>,主要看尖括号内部分。

问题原因:罪魁祸首是web.xml下对spring的DispatcherServlet请求url映射的配置,原配置如下:

<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>

分析原因:<servlet-mapping>的<url-pattern>/</url-pattern>把所有的请求都交给spring去处理了,而所有available的请求url都是在Constroller里使用类似@RequestMapping(value
= "/login/{user}", method = RequestMethod.GET)这样的注解配置的,这样的话对js/css/jpg/gif等静态资源的访问就会得不到。

解决方法:在web.xml里添加如下的配置

<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>

解决方法2:在spring的配置文件中添加如下一行:

<mvc:default-servlet-handler/>

注意,需要是spring3.0.5以上版本

解决方法3

<!-- Handles HTTP GET requests for /resources/** by efficiently serving
up static resources in the ${webappRoot}/resources directory -->
 
 <mvc:resources mapping="/resources/**"
location="/resources/" />

例如:

  

  <!-- For static
resources -->

  <mvc:resources
mapping="/image/**" location="/images/" />

  <mvc:resources
mapping="/js/**" location="/js/" />

  <mvc:resources
mapping="/css/**" location="/css/" />

  <mvc:resources
mapping="/html/**" location="/html/" />

  <mvc:resources
mapping="/software/**" location="/software/" />

  下面这种是直接根据静态文件的后缀来配置的,比较通用,不用为每个子目录配置一个:

<mvc:resources location="/"
mapping="/**/*.html"/>

<mvc:resources location="/"
mapping="/**/*.js"/>

<mvc:resources location="/"
mapping="/**/*.css"/>

<mvc:resources location="/"
mapping="/**/*.png"/>

<mvc:resources location="/"
mapping="/**/*.gif"/>

这个配置告诉spring 静态资源的处理方式

最好还是web.xml 中 "/"路径写为*.htm 等

最新文章

  1. compileDebugJavaWithJavac
  2. php使用file函数、fseek函数读取大文件效率分析
  3. &#39;Missing recommended icon file - The bundle does not contain an app icon for iPhone / iPod Touch of exactly &#39;120x120&#39; pixels, in .png format&#39;
  4. js jq 获取网页元素宽度
  5. 『TCP/IP详解——卷一:协议』读书笔记——03
  6. 2016年10月11日 星期二 --出埃及记 Exodus 18:22
  7. CodeForces 560B Gerald is into Art
  8. Android L中间RecyclerView 、CardView 、Palette使用
  9. 全方位分析Objcetive-C Runtime
  10. PHP语言开发微信公众平台(订阅号)之curl命令
  11. 我的Emacs配置文件
  12. JavaScript之正则表达式[应用实例]
  13. sql union 列的字段不一样的时候
  14. 转)nodejs后台启动方式PM2
  15. [cb]扩展Hierarchy 添加二级菜单
  16. webpack用 babel将ES6转译ES5
  17. [剑指Offer]62-圆圈中最后剩下的数(约瑟夫环问题)(法二待做)
  18. 记一次SQL注入实战
  19. 20172308《Java软件结构与数据结构》第二周学习总结
  20. centos:添加用户

热门文章

  1. MySQL 列,可选择的数据类型(通过sql命令查看:`help create table;`)
  2. 如何将极客时间课程制作成kindle电子书
  3. CentOS 7安装WordPress
  4. 红米note3发热严重,小米真垃圾!
  5. C#编程经验-VS Debug
  6. vscode, cmake编译多个C++文件
  7. js 常用代码片段
  8. SQL Server事务
  9. ios怎么让状态栏颜色和导航栏背景图片颜色一样
  10. mazing ASP.NET Core 2.0【转】