防止SpringMVC拦截器拦截js等静态资源文件的解决方法

发布时间 - 2026-01-11 03:20:41    点击率:

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

方案一、拦截器中增加针对静态资源不进行过滤(涉及spring-mvc.xml)

<mvc:resources location="/" mapping="/**/*.js"/> 
<mvc:resources location="/" mapping="/**/*.css"/> 
<mvc:resources location="/assets/" mapping="/assets/**/*"/> 
<mvc:resources location="/images/" mapping="/images/*" cache-period="360000"/>

<mvc:interceptors>
  <mvc:interceptor>
    <mvc:mapping path="/**/*"/>
    <mvc:exclude-mapping path="/**/fonts/*"/>
    <mvc:exclude-mapping path="/**/*.css"/>
    <mvc:exclude-mapping path="/**/*.js"/>
    <mvc:exclude-mapping path="/**/*.png"/>
    <mvc:exclude-mapping path="/**/*.gif"/>
    <mvc:exclude-mapping path="/**/*.jpg"/>
    <mvc:exclude-mapping path="/**/*.jpeg"/>
    <mvc:exclude-mapping path="/**/*login*"/>
    <mvc:exclude-mapping path="/**/*Login*"/>
    <bean class="com.luwei.console.mg.interceptor.VisitInterceptor"></bean>
  </mvc:interceptor>
</mvc:interceptors>

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

在spring-mvc.xml中启用默认Servlet

 <mvc:default-servlet-handler/>

在web.xml中增加对静态资源的处理

<servlet-mapping>  
  <servlet-name>default</servlet-name>  
  <url-pattern>*.js</url-pattern>  
  <url-pattern>*.css</url-pattern>  
  <url-pattern>/assets/*"</url-pattern>  
  <url-pattern>/images/*</url-pattern>  
</servlet-mapping>

但是当前的设置必须在Spring的Dispatcher的前面

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

<servlet>
  <servlet-name>SpringMVC</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring-mvc.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
  <async-supported>true</async-supported>
</servlet>
<servlet-mapping>
  <servlet-name>SpringMVC</servlet-name>
  <url-pattern>*.action</url-pattern>
</servlet-mapping>

这样设置,Spring就会只针对以'.do'结尾的请求进行处理,不再维护静态资源

针对这三种方案的优劣分析:

  第一种方案配置比较臃肿,多个拦截器时增加文件行数,不推荐使用;

  第二种方案使用默认的Servlet进行资源文件的访问,Spring拦截所有请求,然后再将资源文件交由默认的Sevlet进行处理,性能上少有损耗;

  第三种方案Spring只是处理以'.action'结尾的访问,性能上更加高效,但是再访问路径上必须都以'.action'结尾,URL不太文雅;

综上所述,推荐使用第二和第三中方案

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# SpringMVC拦截静态资源  # SpringMVC拦截器静态资源  # springmvc  # 静态资源  # 解决springMVC 跳转js css图片等静态资源无法加载的问题  # SpringMVC访问静态资源的三种方式小结  # SpringMVC访问静态资源的方法  # 详解SpringMVC中设置静态资源不被拦截的问题  # 详解springmvc拦截器拦截静态资源  # SpringMVC 拦截器不拦截静态资源的三种处理方式方法  # SpringMVC中处理静态资源的过程详解  # 推荐使用  # 拦截器  # 就会  # 多个  # 不太  # 设置为  # 都以  # 再将  # 第二种  # 第一种  # 大家多多  # 第三种  # 这三种  # 上更  # 行数  # 器中  # period  # css  # assets  # images 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 深圳网站制作培训,深圳哪些招聘网站比较好?  Laravel如何理解并使用服务容器(Service Container)_Laravel依赖注入与容器绑定说明  Laravel怎么使用Collection集合方法_Laravel数组操作高级函数pluck与map【手册】  高防服务器租用如何选择配置与防御等级?  美食网站链接制作教程视频,哪个教做美食的网站比较专业点?  如何用虚拟主机快速搭建网站?详细步骤解析  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  如何快速搭建高效可靠的建站解决方案?  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  PHP 500报错的快速解决方法  5种Android数据存储方式汇总  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  Android使用GridView实现日历的简单功能  如何为不同团队 ID 动态生成多个非值班状态按钮  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  香港服务器建站指南:免备案优势与SEO优化技巧全解析  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  如何在景安服务器上快速搭建个人网站?  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  如何在云服务器上快速搭建个人网站?  如何在IIS管理器中快速创建并配置网站?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  linux top下的 minerd 木马清除方法  独立制作一个网站多少钱,建立网站需要花多少钱?  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  Laravel如何处理和验证JSON类型的数据库字段  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  nodejs redis 发布订阅机制封装实现方法及实例代码  Python函数文档自动校验_规范解析【教程】  佛山企业网站制作公司有哪些,沟通100网上服务官网?  Angular 表单中正确绑定输入值以确保提交与验证正常工作  C++时间戳转换成日期时间的步骤和示例代码  如何在云主机上快速搭建多站点网站?  Laravel如何设置自定义的日志文件名_Laravel根据日期或用户ID生成动态日志【技巧】  网站页面设计需要考虑到这些问题  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  如何使用 Go 正则表达式精准提取括号内首个纯字母标识符(忽略数字与嵌套)  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  如何在万网自助建站中设置域名及备案?  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  如何用PHP快速搭建高效网站?分步指南  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?