Spring3中js/css/jpg/gif等静态资源无法找到(No mapping found for HTTP request with URI)问题解决(转)

最近项目中使用到Spring3,在感叹Spring3注解配置清爽的同时竟然出现了这个不和谐的事情,实在无法忍受

问题:部署项目后程序加载或用浏览器访问时出现类似的警告,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/" /> 
  
这个配置告诉spring 静态资源的处理方式

时间: 2024-12-24 17:46:50

Spring3中js/css/jpg/gif等静态资源无法找到(No mapping found for HTTP request with URI)问题解决(转)的相关文章

IIS7.5 不能加载外部引用的第三方JS,CSS,img等一系列静态文件

做了一个mvc的项目,今天放iis上跑样式和功能进行调试,由于之前机子是新装的,所以IIS没有装.装iis是小事几分钟,但测试的过程中,一直是只能显示本页面的html标签和写在本页面的css和js.外部的第三方引用都不能用,实在纳闷.iis重装了几次,最后发现有个iis默认值处有问. 如下-->在打开或关闭window功能中的Internet信息服务里的万维网服务=>常见HTTP功能=>静态内容  .注意,这里默认是不勾选的. IIS7.5 不能加载外部引用的第三方JS,CSS,img等

No mapping found for HTTP request with URI [/crmcrmcrm/css/bootstrap.min.css] in DispatcherServlet with name &#39;springMvc&#39;

先把错误贴上来 No mapping found for HTTP request with URI [/crmcrmcrm/css/sb-admin-2.css] in DispatcherServlet with name 'springMvc'DEBUG [http-bio-8080-exec-6] - Successfully completed requestDEBUG [http-bio-8080-exec-7] - Did not find handler method for [

[org.springframework.web.servlet.PageNotFound] -No mapping found for HTTP request with URI [/homework/js/jquery-1.7.2.min.js] in DispatcherServlet with name &#39;SpringMVC&#39;

先上解决方案:对于上面出现的问题,查看了很多相关的博客,论坛.最后实在Spring-mvc.xml这个配置文件里加入了如下两行: 1 <mvc:annotation-driven /> 2 <mvc:default-servlet-handler /> 问题描述: 由于项目需要Ajax,于是在jsp的head里加入了如下代码: 1 <script type="text/javascript" src="/homework/js/jquery-1.

ssm 整合中js,css 文件无法引入

问题:ssm 整合中第三方 js,css 文件无法引入 检查:ssm 整合配置完好 无拦截器拦截 spring mvc  静态资源已配置 编译时可以直接跳转到js  css 问题发现 js  css 文件放在WEB-INF 下,导致无法引入 解决 js  css 文件放在webapp 下,可以引入 原文地址:https://www.cnblogs.com/jsbk/p/9461374.html

在网页中会引入哪些常见的静态资源?

1.JS(.js   .jsx  .coffee  .ts(TypeScript 类 c# 语言   c sharp  语言)) 2.CSS (.css   .less  .scss  .sass(基本不用了)) 3.Images(.jpg  .png  .gif  .bmp  .svg) 4.字体文件(Fonts)(.svg  .ttf  .eot  .woff  .woff2) 5.模板文件(.ejs  .jade  .vue[这是在webpack中定义组件的方式,推荐这么用]) 网页中引入

spring boot 项目 freemarker 无法加载static 中 js css 文件 原因(报错404)

去掉@EnableWebMvc  注解 ,相关原因请看原博文 https://blog.csdn.net/testcs_dn/article/details/80249894 原文地址:https://www.cnblogs.com/0kuxia0/p/9605436.html

js 设置img标签的src资源无法找到的替代图片(通过img的属性设置)

在网站的前端页面设计中,要考虑到img图片资源的存在性,如果img的src图片资源不存在或显示不出来,则需要显示默认的图片.如何做到呢? 一.监听document的error事件 document.addEventListener("error", function (e) { var elem = e.target; if (elem.tagName.toLowerCase() === 'img') { var notFoundImgSrt = $(elem).attr("

SpringMVC访问静态资源的三种方式(转)

本文转自:http://www.iigrowing.cn/springmvc_fang_wen_jing_tai_zi_yuan_de_san_zhong_fang_shi.html 如何你的DispatcherServlet拦截 *.do这样的URL,就不存在访问不到静态资源的问题. 如果你的DispatcherServlet拦截“/”,拦截了所有的请求,同时对*.js,*.jpg的访问也就被拦截了. <!-- Processes application requests --> <s

转转转!SpringMVC访问静态资源的三种方式

如果你的DispatcherServlet拦截 *.do这样的URL,就不存在访问不到静态资源的问题.如果你的DispatcherServlet拦截"/",拦截了所有的请求,同时对*.js,*.jpg的访问也就被拦截了. 问题原因:罪魁祸首是web.xml下对spring的DispatcherServlet请求url映射的配置,原配置如下: <servlet> <servlet-name>spring</servlet-name> <servl