问题产生:

因为我们在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. php学习笔记-默认参数

    在定义函数的时候,我们可以把其中的一个参数变的特殊起来,使它有一个默认值,这个参数就叫默认参数.在调用这个函数的时候,你既可以给这个默认参数传递一个值,这样的话默认参数的值会被覆盖掉,也可以不给它传递 ...

  2. jQuery CSS 操作

    jQuery CSS 操作 jQuery 拥有三种用于 CSS 操作的重要函数: $(selector).css(name,value) $(selector).css({properties}) $ ...

  3. 在ubuntu 14.04 编译android 2.3.1 错误解决办法

    首先必须降低gcc版本: sudo apt-get install gcc-4.4sudo apt-get install g++-4.4sudo rm -rf /usr/bin/gcc /usr/b ...

  4. 使用xposed 来解阿里ctf-2014 第三题

    只能说,有了xposed以后,对于java代码的hook从此非常简单 直接粘贴代码了,对于xposed 怎么上手,请参考https://github.com/rovo89/XposedBridge/w ...

  5. java 学习第一篇简单基础

    Java基础 Java Java 和C#有着极为相似的语法. 和C#都是面向对象的高级程序语言. JAVA是一个开源,公开的语言,有着极其丰富的开源库和其他资源. JAVA分类 JAVA分SE EE ...

  6. Python3下的paramiko模块

    paramiko模块是基于Python实现的SSH远程安全连接,用于SSH远程执行命令.文件传输等功能. 默认Python没有,需要手动安装:pip install paramiko SSH密码认证远 ...

  7. Mybatis环境搭建中的案例分析 及 如果自己编写DAO接口的实现类

    Mybatis环境搭建中的案例分析public static void main (String[] args) throws Exception { //读配置文件 //第一个: 使用类加载器,只能 ...

  8. 拖放(Drag和Drop)--html5

    拖放,就是抓取一个对象后拖放到另一个位置.很常用的一个功能,在还没有html5的时候,我们实现这个功能,通常会用大量的js代码,再利用mousemove,mouseup等鼠标事件来实现,总的来说比较麻 ...

  9. SSH—网上商城之商品图片文件上传

    前言 网上商城中的淘宝图片要显示在页面的前提是图片应该已经在数据库里面,那么怎么实现图片的上传功能呢,这就是今天要说的主题. 内容 需求: 商城后台需要添加图片文件,用来图片显示 解决方式: Stru ...

  10. Mole and Abandoned Mine

    Mole and Abandoned Mine n点m条边的无向图,删除第i条边花费c[i],问1到n只有一条路径时所需要的最小花费? \(2\le n\le 15\) . 我又A掉了一道zzs的题啦 ...