https://blog.csdn.net/kingmax54212008/article/details/79330308

今天遇到一个比较新奇的问题,但是也应该是使用spring MVC框架时由于疏忽经常会遇到的一个,解决后写出来和大家分享分享。

问题描述:项目正常启动,可以访问页面,但是无法找到静态资源文件,如css,js等文件资源。

浏览器控制台报错信息:

idea后台报错信息:

  1. 二月 07, 2017 11:27:35 上午 org.springframework.web.servlet.PageNotFound noHandlerFound
  2. 警告: No mapping found for HTTP request with URI [/myboss-web/js/jquery-1.8.3.js] in DispatcherServlet with name 'mvc-dispatcher'
  3. 二月 07, 2017 11:27:35 上午 org.springframework.web.servlet.PageNotFound noHandlerFound
  4. 警告: No mapping found for HTTP request with URI [/myboss-web/js/fun.base.js] in DispatcherServlet with name 'mvc-dispatcher'

因为项目使用了spring security,之前我一度怀疑是不是没有给静态文件设置访问权限,后来确认了已经设置了访问静态资源无需权限认证,也检查了mvc拦截器的配置信息,没发现什么明显异常,之后就纳闷了。去网上查阅了一些资料后发现,确实是mvc拦截器在作祟。

我之前的拦截器配置信息:

  1. <!--配置拦截器-->
  2. <servlet>
  3. <servlet-name>mvc-dispatcher</servlet-name>
  4. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  5. <init-param>
  6. <param-name>contextConfigLocation</param-name>
  7. <param-value>classpath*:/spring/applicationContext-mvc.xml</param-value>
  8. </init-param>
  9. <load-on-startup>1</load-on-startup>
  10. </servlet>
  11. <servlet-mapping>
  12. <servlet-name>mvc-dispatcher</servlet-name>
  13. <url-pattern>/</url-pattern>
  14. </servlet-mapping>

从配置上分析,如此配置会把所有的请求都会进行拦截,交给spring去处理。而spring所有请求的URL都是在controller中使用注解@RequestMapping标明,所以这样的情况下访问静态资源是访问不到的。

以下给出三种解决方案,自行选择使用

方法1:简单粗暴地告诉服务器,这些资源不需要拦截!

直接在web.xml文件中进行配置,如下:

  1. <servlet-mapping>
  2. <servlet-name>default</servlet-name>
  3. <url-pattern>*.css</url-pattern>
  4. </servlet-mapping>
  5. <servlet-mapping>
  6. <servlet-name>default</servlet-name>
  7. <url-pattern>*.xml</url-pattern>
  8. </servlet-mapping>
  9. <servlet-mapping>
  10. <servlet-name>default</servlet-name>
  11. <url-pattern>*.swf</url-pattern>
  12. </servlet-mapping>
  13. <servlet-mapping>
  14. <servlet-name>default</servlet-name>
  15. <url-pattern>*.zip</url-pattern>
  16. </servlet-mapping>
  17. <servlet-mapping>
  18. <servlet-name>default</servlet-name>
  19. <url-pattern>*.gif</url-pattern>
  20. </servlet-mapping>
  21. <servlet-mapping>
  22. <servlet-name>default</servlet-name>
  23. <url-pattern>*.jpg</url-pattern>
  24. </servlet-mapping>
  25. <servlet-mapping>
  26. <servlet-name>default</servlet-name>
  27. <url-pattern>*.png</url-pattern>
  28. </servlet-mapping>
  29. <servlet-mapping>
  30. <servlet-name>default</servlet-name>
  31. <url-pattern>*.js</url-pattern>
  32. </servlet-mapping>

如果你嫌这样太麻烦,太low的话,请移步下面两种方法!

方法2:直接告诉spring,这个你就得这么做!

在MVC配置文件中添加资源文件映射。

  <resources mapping="/resources/**" location="/resources/" />
<resources mapping="/images/**" location="/images/" />
<resources mapping="/js/**" location="/js/" />

注解: 
mapping:映射     
location:本地资源路径,注意必须是webapp根目录下的路径。          
两个*,它表示映射resources/下所有的URL,包括子路径(即接多个/)
可能有筒子看完这个后会回来说:“博主写的啥玩意,照着写了还是没用,我绝对没敲错字!我还是复制过去的!!!”
如果真的有这样的哥们,别告诉我,否则我怕我会忍不住会拿出我的30米大刀!
请自行更换路径!!!
当然这个还有一个需要注意的地方:
配置的location一定要是web-app根目录下才行,如果你将资源目录,放置到web-app/WEB-INF下面的话,恭喜你,访问失败!404 NOT FOUND

方法3:全部使用默认的,也别操啥心了

  1. <mvc:default-servlet-handler/>

比较懒得童鞋可以直接在MVC配置文件加上这么一句,这个确实方便,但是弊端就是他会把你发出的请求全部按照默认的处理了!
如果直接贴出这一句,我怕又有筒子会说怎么报错了,mvc标签报错了!
哥们,你要是这种错误都解决不了,你也先别看这博文了,先去看看什么叫namespace吧!还来得及治疗!

  1. <pre code_snippet_id="2167768" snippet_file_name="blog_20170207_4_9118558" style="margin-top: 0px; margin-bottom: 0px; margin-left: 22px; white-space: pre-wrap; word-wrap: break-word; line-height: 18px; font-family: 'Courier New' !important;"></pre>
  2. <pre></pre>
  3. <pre></pre>

完美解决SpringMVC中静态资源无法找到(No mapping found for HTTP request with URI)问题的更多相关文章

  1. spring访问静态资源出错,No mapping found for HTTP request with URI xxx/resources/js/jquery.min.js...

    问题:spring访问静态资源出错,No mapping found for HTTP request with URI xxx/resources/js/jquery.min.js... web.x ...

  2. IDEA中静态资源无法找到的原因

    IDEA中静态资源无法找到, 原因1:同名的文件但是在不同的包里. 原因2:IDEA重启,web清空缓存. 原因3:错误的文件及路径. 原因4:其他原因排除后,可使用绝招重启试试.

  3. 解决SpringMVC拦截静态资源的问题

    优雅REST风格的资源URL不希望带 .html 或 .do 等后缀.由于早期的Spring MVC不能很好地处理静态资源,所以在web.xml中配置DispatcherServlet的请求映射,往往 ...

  4. SpringMVC中静态资源的处理

    web项目中web.xml配置 在一个使用springmvc的web项目中,必然在web.xml中要配置前端控制器DispatcherServlet <servlet> <servl ...

  5. 解决maven中静态资源只能放到properties中的问题

    构建Maven项目的时候,如果没有进行特殊的配置,Maven会按照标准的目录结构查找和处理各种类型文件. Maven项目的标准目录结构 src main java         源文件 resour ...

  6. SpringMVC常用配置-添加静态资源处理器-针对SpringMVC中静态资源无法访问的问题

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

    原文地址:http://www.programgo.com/article/96083031845/ 最近项目中使用到Spring3,在感叹Spring3注解配置清爽的同时竟然出现了这个不和谐的事情, ...

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

    本文转自:http://www.iigrowing.cn/springmvc_fang_wen_jing_tai_zi_yuan_de_san_zhong_fang_shi.html 如何你的Disp ...

  9. IntelliJ IDEA+SpringBoot中静态资源访问路径陷阱:静态资源访问404

    IntelliJ IDEA+SpringBoot中静态资源访问路径陷阱:静态资源访问404 .embody{ padding:10px 10px 10px; margin:0 -20px; borde ...

随机推荐

  1. Linux的DNS实现负载均衡及泛域名部署

    DNS负载均衡技术的实现原理是在DNS服务器中为同一个主机名配置多个IP地址,在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到 ...

  2. Flask的实例化参数及对app的配置

    目录 1.调试模式初测 2.app.config中的其他配置参数详解 3.修改config配置的方式(from_object用法) 3.1直接对app.config进行修改: 3.2使用类的方式导入: ...

  3. Python的字符串与字节码转换

    一张图弄懂python的字符串与字节码转换  

  4. VUE的element-ui的使用

    我们在自己的网站当中有的时候会用到element-ui的组建 1.如何安装element-ui的组件 在命令行工具当中输入cnpm i element-ui -S, 等待安装 2.如何在vue当中使用 ...

  5. Linux传输指令-scp

    本地传到远程 scp -rf bt.plist cjp@centos:~/下载 从远程下载到本地 scp -rf cjp@centos:~/下载 ~ 参数详解 参数 描述 -a 尽可能将档案状态.权限 ...

  6. 前端(3)JavaScript

    前端(3)JavaScript JavaScript概述 1ECMAScript和JavaScript的关系: 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaS ...

  7. python--线程知识详解

    Threading用于提供线程相关的操作,线程是应用程序中工作的最小单元. 1.1.threading模块 threading模块建立在_thread模块之上.thread模块以低级=原始的方式来处理 ...

  8. struts2学习1

    struts2使用优势 自动封装参数 参数校验 结果的处理(转发|重定向) 国际化 显示等待页面 表单的防止重复提交 struts2具有更加先进的架构以及思想 使用拦截器 struts2的历史 str ...

  9. MySQL中 ORDER BY 与 LIMIT 的执行顺序

    如下: ORDER BY 与 LIMIT 的执行顺序:ORDER BY > LIMIT ORDER BY 与 LIMIT 的编写顺序:ORDER BY > LIMIT 正确写法: sele ...

  10. Spring---SSH整合(二)

    基于Spring---SSH整合,使用SSH编写后台: User模块层 TreeNode.hbm.xml <?xml version="1.0" encoding=" ...