问题产生:

因为我们在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. 高性能MySQL笔记-第5章Indexing for High Performance-003索引的作用

    一. 1. 1). Indexes reduce the amount of data the server has to examine.2). Indexes help the server av ...

  2. Android 菜单 之 上下文菜单ContextMenu

    所谓上下文菜单就是当我们长按某一个文件时弹出的菜单 操作这个菜单我们要重写onCreateContextMenu()方法 如上一篇文章一样,对于这个菜单中选型的操作也有动态添加和xml文件添加两种方法 ...

  3. CF 1029E Tree with Small Distances

    昨晚随便玩玩搞个div3结果浪翻了…… 强烈谴责D题hack数据卡常 考虑到本题中所要求的最短距离不会大于2,所以我们可以把所有结点到$1$的距离通过对$3$取模分类,考虑到直接自顶向下贪心不满足局部 ...

  4. setTimeout()和setInterval() 何时被调用执行(非多线程).RP

    定义 setTimeout()和setInterval()经常被用来处理延时和定时任务.setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式,而setInterval()则可以在每隔 ...

  5. kaggle Titanic

    # coding: utf-8 # In[19]: # 0.78468 # In[20]: import numpy as np import pandas as pd import warnings ...

  6. CodeForces 404D Minesweeper 1D (DP)

    题意:给定一个序列,*表示雷,1表示它旁边有一个雷,2表示它旁边有两个雷,0表示旁边没有雷,?表示未知,求有多少情况. 析:dp[i][j] 表示第 i 个放 j 状态,有多少种情况,然后很简单的DP ...

  7. [转]JQ中$(window).load和$(document).ready区别与执行顺序

    一.$(window).load().window.onload=function(){}和$(document).ready()方法的区别 1.$(window).load() 和window.on ...

  8. code manager tools myeclipse10 svn插件安装及使用

    一.下载: 1.在线安装地址:http://subclipse.tigris.org/update_1.6.x 2.安装包下载地址:http://subclipse.tigris.org/servle ...

  9. Java基础之8个基本类型及基本类型间转换

    8种基本数据类型 Java语言有8种基本数据类型, 分别用于存储整数.浮点数.字符数据和布尔类型数据.需要注意的是: 现在所介绍的仅仅是基本数据类型,后续还会介绍很多非基本数据类型.基本数据类型如图 ...

  10. P2498 [SDOI2012]拯救小云公主

    \(\color{#0066ff}{ 题目描述 }\) 英雄又即将踏上拯救公主的道路-- 这次的拯救目标是--爱和正义的小云公主. 英雄来到boss的洞穴门口,他一下子就懵了,因为面前不只是一只bos ...