springboot静态资源访问问题归纳

news2024/11/24 2:50:09

以下内容基于springboot 2.3.4.RELEASE


1、默认配置的springboot项目,有四个静态资源文件夹,它们是有优先级的,如下:

"classpath:/META-INF/resources/",  (优先级最高)

"classpath:/resources/",

"classpath:/static/",

"classpath:/public/"  (优先级最低)

也就是说,"classpath:/META-INF/resources/" 中有pay.html,其他三个有pay.html都没用,因为只会展示最优先那个

我该怎么访问?

http://localhost:8093/terminal/pay.html  就能访问了  (terminal是项目名)

你不要在pay.html前面加static啊,public之类的,如http://localhost:8093/terminal/static/pay.html

这样是访问不到资源的。这是因为Spring Boot的静态资源映射机制会自动从配置的静态资源位置(如 /META-INF/resources//resources//static//public/)中查找文件,但它在构建URL路径时不会包含这些文件夹名。(你如果能访问,那肯定是项目中存在:自定义静态路径规则)

2、整合thymeleaf,我该怎么访问?

1)  先加依赖

  <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
  </dependency>

2)  创建controller

@RequestMapping("/base")
@Controller
public class BaseController {

    @GetMapping("/pay")
    public String pay() {
        return "pay2";
    }
}

3) 如: http://localhost:8093/terminal/base/pay 会去templates文件夹下找pay2.html文件。为什么?因为模板有默认配置,也就是说你在application.yml中配置的

spring:
  thymeleaf:
    prefix: classpath:/templates/
    suffix: .html

就是个默认配置,你不写这段配置代码是同样效果。

3、添加自定义拦截器后访问不到静态资源

如:拦截器加入下面的代码

@Configuration
public class JwtWebConfig implements WebMvcConfigurer {
    /**
     * 添加拦截器
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        //拦截路径可自行配置多个 可用 ,分隔开

        registry.addInterceptor(new JwtInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns("/error")
                .excludePathPatterns("/abc/**"); //不拦截以/abc开头的URI请求
    }

}

 yml配置文件中也要重新定义静态资源的匹配规则,只有当匹配到了,才会认为这是个静态资源请求

spring:
  mvc:
    static-path-pattern: /abc/**

也就是说,当我访问http://localhost:8093/terminal/abc/pay.html时,会被认为是一个静态资源访问请求,它会去找静态资源文件夹下的pay.html,同样按照优先级来找。

4、注意缓存

做测试时,一定要把它禁掉。idea中如果是拷贝粘贴的文件,要留意target包下是否有这个文件存在,没有就运行compile

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2064042.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【精选】基于Spark的国漫推荐系统(精选设计产品)

目录&#xff1a; 系统开发技术 Python可视化技术 Django框架 Hadoop介绍 Scrapy介绍 IDEA介绍 B/S架构 MySQL数据库介绍 系统流程分析 操作流程 添加信息流程 删除信息流程 系统系统介绍&#xff1a; 可以查看我的B站&#xff1a; 系统测试 运行环境 软件平台 硬…

docker-compose安装NebulaGraph 3.8.0

文章目录 一. 安装NebulaGraph1.1 通过 Git 克隆nebula-docker-compose仓库的3.8.0分支到主机1.2 部署1.3 卸载1.4 查看 二. 安装NebulaGraph Studio2.1 下载 Studio 的部署配置文件2.2 创建nebula-graph-studio-3.10.0目录&#xff0c;并将安装包解压至目录中2.3 解压后进入 n…

shaushaushau1

CVE-2023-7130 靶标介绍&#xff1a; College Notes Gallery 2.0 允许通过“/notes/login.php”中的参数‘user’进行 SQL 注入。利用这个问题可能会使攻击者有机会破坏应用程序&#xff0c;访问或修改数据. 已经告诉你在哪里存在sql注入了&#xff0c;一般上来应该先目录扫…

【补充篇】AUTOSAR多核OS介绍(下)

文章目录 前文回顾1 AUTOSAR OS1.1 AUTSOAR OS元素1.1.1 操作系统对象1.1.2 操作系统应用程序1.1.3 AUTOSAR OS裁剪类型1.1.4 AUTOSAR OS软件分区1.2 AUTOSAR OS自旋锁1.3 AUTOSAR OS核间通信1.4 AUTOSAR OS多核调度前文回顾 在上篇文章【补充篇】AUTOSAR多核OS介绍(上)中,…

对于一个36岁的人来说,现在转行AI大模型还来得及吗?

前言 在职场生涯中&#xff0c;33岁似乎是一个尴尬的年龄。许多人在这个阶段已经定型&#xff0c;难以寻求新的突破。然而&#xff0c;随着科技行业的飞速发展&#xff0c;人工智能成为了新时代的宠儿。那么&#xff0c;对于一个33岁的人来说&#xff0c;现在转行AI大模型还来…

做SSH实验下载 paramiko库

今天做SSH实验下载paramiko库文件一直出问题&#xff0c;后面库文件下好了还是报错&#xff0c;这里记录了我的解决方案。 pycharm修改默认下载路径为国内镜像&#xff08;我这里用清华大学的镜像下载快一些&#xff09; Simple Index 到这里路径就改好了&#xff0c;接下来就…

从就业出发,深度剖析大数据行业的现状与前景

以一个经典案例引入——啤酒与纸尿裤的故事。 20世纪90年代&#xff0c;沃尔玛从购物的后台信息数据中&#xff0c;发现很多买了纸尿裤的男士会同时买啤酒。后来&#xff0c;调查发现&#xff0c;此类人多是被“轰出来”买纸尿裤&#xff0c;一想到养娃压力大&#xff0c;心情…

牛客竞赛数据结构专题班树状数组、线段树练习题

牛客竞赛_ACM/NOI/CSP/CCPC/ICPC算法编程高难度练习赛_牛客竞赛OJ G 智乃酱的平方数列&#xff08;线段树&#xff0c;等差数列&#xff0c;多项式&#xff09; 题目描述 想必你一定会用线段树维护等差数列吧&#xff1f;让我们来看看它的升级版。 请你维护一个长度为510 ^5…

Mysql高级 [Linux版] 性能优化 数据库系统配置优化 和 MySQL的执行顺序 以及 Mysql执行引擎介绍

数据库系统配置优化 1、定义 数据库是基于操作系统的&#xff0c;目前大多数MySQL都是安装在linux系统之上&#xff0c;所以对于操作系统的一些参数配置也会影响到MySQL的性能&#xff0c;下面就列出一些常用的系统配置。 2、优化配置参数-操作系统 优化包括操作系统的优化及My…

集运系统:如何实现不同员工的不同操作权限?

在集运行业&#xff0c;员工的角色和职责各有不同&#xff0c;因此对系统的操作权限需求也不尽相同。为了确保数据的安全性和业务的顺利进行&#xff0c;易境通集运系统提供了灵活的权限管理功能&#xff0c;让企业可以根据员工的角色和职责&#xff0c;设置不同的操作权限。 易…

Redis (day 3)

一、通过jedis连接数据库 1.首先导入依赖 <!-- https://mvnrepository.com/artifact/redis.clients/jedis --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>5.1.0</version></de…

mac 微信数据直接存储到移动硬盘

在apple设备上存储都是1500块/128gb的价格收取的&#xff0c;真的是寸土寸金。在手机已经占用了一遍存储空间之后&#xff0c;微信备份还要占用一遍。 iCloud备份微信聊天记录的稳定性真的非常差劲&#xff0c;比如我微信30g&#xff0c;经常恢复到20g左右就被打断&#xff0c;…

【C++ Primer Plus习题】2.6

问题: 解答: #include <iostream> using namespace std;#define LIGHT_TO_SKY 63240double lightToSky(double value) {return value * LIGHT_TO_SKY; }int main() {double light 0;cout << "请输入光年值:";cin >> light;cout << light &…

还在返回一大堆 null 字段给前端?

在许多情况下&#xff0c;返回的 JSON 数据可能包含许多 null 值的字段&#xff0c;这会导致数据冗余&#xff0c;增加网络传输的负担&#xff0c;并使得前端处理数据变得复杂。因此&#xff0c;使用 JsonInclude(JsonInclude.Include.NON_NULL) 可以帮助我们优化 JSON 的输出&…

看看人家写的,Controller太优雅了~【送源码】

今天咱们来聊聊如何写出优雅的Controller代码。 写程序想让作品成为经典&#xff0c;不只是简单地加个try-catch就完事了。有时候&#xff0c;一个不小心&#xff0c;Controller里写的业务逻辑都能让你血压飙升&#xff01;不过别慌&#xff0c;今天我就来带大家看看怎么把Cont…

文件描述符的复制,访问测试,修改文件大小,文件锁

指定文件描述符 #include <unistd.h>int dup2(int oldfd, int newfd); ->功能:复制文件描述符表的特定条目到指定项&#xff0c; ->参数:oldfd: 源文件描述符 newfd: 目标文件描述符 ->返回值:成功返回目标文件描述符(newfd)&#xff0c;失败返回…

【C++ 面试 - 面向对象】每日 3 题(八)

✍个人博客&#xff1a;Pandaconda-CSDN博客 &#x1f4e3;专栏地址&#xff1a;http://t.csdnimg.cn/fYaBd &#x1f4da;专栏简介&#xff1a;在这个专栏中&#xff0c;我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话&#xff0c;欢迎点赞&#x1f44d;收藏&…

P(查准率) R(查全率) AP mAP最通俗准确的讲解

学习YOLO的过程中遇到了mAP指标&#xff0c;在网上看了很多关于mAP的讲解&#xff0c;不是很理解其计算过程&#xff0c;于是总结了各个帖子及自己的理解&#xff0c;给出mAP计算的规律&#xff0c;这样就能很好的记忆。 目录 一、P&#xff08;精确率&#xff09;、R&#x…

I2C通信协议(软件I2C和硬件I2C)

相比于之前学的异步全双工且需要两条通信线的串口通信&#xff0c;I2C则为同步半双工&#xff0c;仅需要一条通信线&#xff0c;全双工与半双工区别如下&#xff1a; 全双工&#xff08;Full Duplex&#xff09;半双工&#xff08;Half Duplex&#xff09;数据传输方式同时双向…