当前位置: 首页 > article >正文

【SpringMVC】记录一次Bug——mvc:resources设置静态资源不过滤导致WEB-INF下的资源无法访问

SpringMVC 记录一次bug

其实都是小毛病,但是为了以后再出毛病,记录一下:

mvc:resources设置静态资源不过滤问题

SpringMVC中配置的核心Servlet——DispatcherServlet,为了可以拦截到所有的请求(JSP页面除外),并将这些请求发送给对应的处理器(Handler)处理,我们将mapping部分的url-pattern设置为<url-pattern>/</url-pattern>,这样就可以匹配到根目录下的所有资源,具体原因可以去看这篇文章:彻底理解servlet匹配顺序 / 和 /*的区别_default-wrapper-CSDN博客,为了可以访问到静态资源,我们需要通过以下配置去访问到我们的静态资源:

<!-- 设置静态资源不过滤 -->
<mvc:resources location="/css/" mapping="/css/**"/>  <!-- 样式 -->
<mvc:resources location="/img/" mapping="/img/**"/>  <!-- 图片 -->
<mvc:resources location="/js/" mapping="/js/**"/>  <!-- javascript -->

但是如果配置了这个,我就没法访问到WEB-INF下面的文件了,很奇怪,按理说这段配置应该是不影响程序内部对WEB-INF下资源的访问的,于是我去搜了一下,还真的有和我类似的情况,原来是没有添加SpringMVC的注解支持:<mvc:annotation-driven/>,那么为什么会这样呢??这个涉及到Spring的源码,我搜了几篇博客,大概的意思就是说:

在不配置<mvc:annotation-driven/>的情况下配置 <mvc:resources>标签的话,我们的所有静态资源,包括JSP都被SpringMVC注册为静态资源交给ResourceHttpRequestHandler处理,而不是交给DispatcherServlet处理,那么就导致了JSP被当作静态页面,那我又没有在 <mvc:resources>中配置静态资源的具体路径,那自然就找不到位置了。


http://www.kler.cn/a/388515.html

相关文章:

  • 纯Dart Flutter库适配HarmonyOS
  • 活着就好20241226
  • 数字工厂管理系统就是ERP系统吗
  • 国标GB28181视频监控平台与Liveweb视频监控汇聚平台对接方案
  • 云原生后端开发(一)
  • SharpDX 从入门到精通:全面学习指南
  • W3C HTML 活动
  • springboot使用aop防御用户重复请求
  • Centos Linux 7 搭建邮件服务器(postfix + dovecot)
  • cv2.threshold利用OSTU方法分割图像的前景和背景
  • 从文本到图像:AIGC 如何改变内容生产的未来
  • 羲和数据集收集器1.0
  • Leetcode 3347. Maximum Frequency of an Element After Performing Operations II
  • 【k8s】ClusterIP能http访问,但是不能ping 的原因
  • 「C/C++」C/C++STL篇 之 数组赋值给std::vector多种方法
  • Ubuntu 的 ROS 2 操作系统安装与测试
  • 基于Diodes全新的140瓦PD3.1超高功率密度GaN充电器解决方案
  • 海量日志收集ELK实战(docker部署ELK)从日志中挖取宝贵数据
  • 云防护单节点2T抗攻击能力意味着什么?
  • 《深入浅出HTTPS​​​​​​​》读书笔记(7):安全的密码学Hash算法
  • 全局注册和局部注册
  • JSON-RPC-CXX深度解析:C++中的远程调用利器
  • 华为OD七日集训第1期 - 按算法分类,由易到难,循序渐进,玩转OD
  • [安洵杯 2019]easy_web 详细题解
  • LeetCode【0004】寻找两个正序数组的中位数
  • 线程与进程的区别(面试)