问题产生:

因为我们在web.xml中写了 拦截所有请求,当然包括了静态资源,所以页面需要引用css或js的话,该请求也会被拦截,例如:

在style.css中写一个简单样式,加个背景颜色

  1.  body{
  2.  background-color: antiquewhite;
  3.  }

然后在index.jsp页面引用该样式:<link rel="stylesheet" href="/css/style.css">

再一次运行项目,会看到并没有样式,F12可以看到在调用style.css的时候报了404错误,这是因为被DispatcherServlet拦截了

解决办法:

方案一:拦截器中增加针对静态资源不进行过滤(涉及spring-mvc.xml)
注意:需引入mvc命名空间
  1.  <!-- 添加注解驱动 -->
  2.  <mvc:annotation-driven/>
  3.  <!--
  4.  通过mvc:resources设置静态资源,这样servlet就会处理这些静态资源,而不通过控制器
  5.  设置不过滤内容,比如:css,js,img 等资源文件
  6.  location指的是本地的真是路径,mapping指的是映射到的虚拟路径。
  7.  -->
  8.  <mvc:resources mapping="/css/**" location="/css/"/>

方案二:使用默认的servlet处理静态资源(涉及spring-mvc.xml,web.xml)

在spring-mvc.xml中添加:
  1.  <!--启用默认Servlet-->
  2.  <mvc:default-servlet-handler/>
     
     

    <mvc:default-servlet-handler/> 这个,点击打开这个可以看到如下信息:

    这里面有两个信息非常重要:第一是default Servlet,这个值得是容器默认的Servlet,其实就是tomcat默认的Servlet;第二:路径的转换,我们可以看出是转换到/的路径;

    /的路径指的是webapp的路径(此处一定注意不是WEB-INF,WEB-INF路径的访问是受权限控制的,tomcat维护权限)。这样配置的意思就是说所有的按照规则访问静态资源的请求都会匹配到对应的webapp下的路径:

 
在web.xml中添加:
  1.  <!--增加对静态资源的处理,当前的设置必须在Spring的Dispatcher的前面-->
  2.  <servlet-mapping>
  3.  <servlet-name>default</servlet-name>
  4.  <url-pattern>*.css</url-pattern>
  5.  <url-pattern>/css/*</url-pattern>
  6.  </servlet-mapping>

而这个标签起作用的前提就是需要我们把静态资源放在webapp下,而非WEB-INF下,否则还是会无效

方案三:修改spring的全局拦截设置为*.do的拦截(涉及web.xml)

  1.  <!-- 拦截所有请求 -->
  2.  <servlet-mapping>
  3.  <servlet-name>dispatcher</servlet-name>
  4.  <!--<url-pattern>/</url-pattern>-->
  5.  <url-pattern>*.do</url-pattern>
  6.  </servlet-mapping>

这时,我们浏览器的所有访问路径就要变成:http://localhost:8080/xxx/xxx.do

 
 

比较总结:

第一种方案配置比较臃肿,多个拦截器时增加文件行数,不推荐使用
第二种方案使用默认的Servlet进行资源文件的访问,Spring拦截所有请求,然后再将资源文件交由默认的Sevlet进行处理,性能上少有损耗
第三种方案Spring只是处理以'.do'结尾的访问,性能上更加高效,但是再访问路径上必须都以'.do'结尾,URL不太文雅
 
综上所述,推荐使用第二和第三中方案
 

--------------------- 本文来自 van久 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/qq_40594137/article/details/79112700?utm_source=copy

spring MVC设置不拦截静态资源的更多相关文章

  1. Spring MVC程序中得到静态资源文件css,js,图片文件的路径问题总结

    上一篇 | 下一篇 Spring MVC程序中得到静态资源文件css,js,图片 文件的路径 问题总结 作者:轻舞肥羊 日期:2012-11-26 http://www.blogjava.net/fi ...

  2. Spring MVC程序中得到静态资源文件css,js,图片

    转载自:http://www.blogjava.net/fiele/archive/2014/08/24/417283.html 用 Spring MVC 开发应用程序,对于初学者有一个很头疼的问题, ...

  3. springMVC设置不拦截静态资源的方法

    SpringMVC提供<mvc:resources>来设置静态资源,但是增加该设置如果采用通配符的方式增加拦截器的话仍然会被拦截器拦截,可采用如下方案进行解决: 方案一.拦截器中增加针对静 ...

  4. SpringMVC设置不拦截静态资源css,js

    转自:https://blog.csdn.net/sh513023410/article/details/81361867

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

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

  6. Spring Mvc Web 配置拦截规则与访问静态资源 (三)

    拦截规则配置 1. *.do <!-- Processes application requests --> <servlet> <servlet-name>app ...

  7. spring-mvc不拦截静态资源的配置

    spring-mvc不拦截静态资源的配置 标签: spring 2015-03-27 23:54 11587人阅读 评论(0) 收藏 举报 版权声明:本文为博主原创文章,未经博主允许不得转载. &qu ...

  8. SpringMCVC拦截器不拦截静态资源

    SpringMCVC拦截器不拦截静态资源 SpringMVC提供<mvc:resources>来设置静态资源,但是增加该设置如果采用通配符的方式增加拦截器的话仍然会被拦截器拦截,可采用如下 ...

  9. Spring MVC中的拦截器/过滤器HandlerInterceptorAdapter的使用

    一般情况下,对来自浏览器的请求的拦截,是利用Filter实现的 而在Spring中,基于Filter这种方式可以实现Bean预处理.后处理. 比如注入FilterRegistrationBean,然后 ...

随机推荐

  1. 3dsmax里面的喷射器spray和超级喷射器superspray是个什么东西

    以前搜索过粒子系统的一些资料,最早有一篇什么论文里提到一种方法可以用计算机模拟一些看起来数目比较多的一些效果,比如 很多雨滴.下雪天的雪花,作者把这个东西叫particle system,就是粒子系统 ...

  2. 数字图像处理实验(5):PROJECT 04-01 [Multiple Uses],Two-Dimensional Fast Fourier Transform 标签: 图像处理MATLAB数字图像处理

    实验要求: Objective: To further understand the well-known algorithm Fast Fourier Transform (FFT) and ver ...

  3. python3-password在输入密码时隐藏密码

    # Auther: Aaron Fan #这个脚本请在命令行去执行才可以试出效果,pycharm这里无法测试这个脚本,切记!import getpass _username = "Aaron ...

  4. 深、浅copy

    深.浅copy多用于列表 浅copy:第一层中不变的数据是独立的,可变类型元素指向同一块内存地址 l1 = [1,2,3,["a","b"]] l2 = l1. ...

  5. Java_枚举类

    枚举类 枚举类不出来的时候只能如下写代码 //Student.java package cn.itcast.enumeration; public class Student { private St ...

  6. Netty中的Future

    先看下Future的整个继承体系,还有一个ChannelFuture不在里面:     在并发编程中,我们通常会用到一组非阻塞的模型:Promise,Future 和 Callback.其中的 Fut ...

  7. 数据结构_find_lucky_number(寻找幸运值)

    数据结构_find_lucky_number(寻找幸运值) 问题描述 给出两个已按升序排列的数组 a[1..n],b[1..m],如果存在 i,j,使得a[i]+b[j]==k,我们便说已找到幸运值. ...

  8. Business Trip to Taian

    工作必备 电脑.电源(下载好小助手.VPN.个人证书) 手机.充电器 重要参考书籍 生活用品 衣服,夏天体恤为主,别忘了加件外套 被罩.床单和枕巾 牙刷牙膏肥皂之类的必带,中号浴巾一条 拖鞋要不要? ...

  9. Android wifi管理类:WifiAdmin

    1.wifi的五种状态: WIFI_STATE_DISABLED   WIFI网卡不可用 WIFI_STATE_DISABLING WIFI网卡正在关闭 WIFI_STATE_ENABLED     ...

  10. RGB565的转换

    RGB色彩模式也就是“红绿蓝”模式是一种颜色标准,是通过对红(R).绿(G).蓝(B)三种颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红.绿.蓝三个通道的颜色,这个标准几 ...