springboot对静态资源的支持
1、spring boot默认静态路径支持
Spring Boot 默认将 / 所有访问映射到以下目录:**
classpath:/static
classpath:/public
classpath:/resources
classpath:/META-INF/resources
也就是说什么也不用配置,通过浏览器可以直接访问这几个目录下的文件。
1.1、首先搞清楚classpath是指的哪个目录
项目中一般创建这几个目录是在resources下创建的如下图:
为什么接在resources资源目录下创建这个几个目录就是classpathc呢?
这里我们看下项目打包后target下的目录结构:
因为默认maven打包完后,会直接把resources下的文件都拷贝到classes目录下,与生成的java class目录是同级的。
所以这里才是classpath。如果你直接访问不到静态文件,那么需要看的是你的target目录下包不包含这些文件。
并且只有src/main/java/resources
目录下的文件才会被maven打包进去,如果是其它目录文件,还需要在pom中添加<resources>
包含进去才行。
启动项目后直接访问:
http://localhost:18100/bootstrap.css
http://localhost:18100/1.jpg
http://localhost:18100/2.jpg
http://localhost:18100/3.jpg
http://localhost:18100/4.jpg
1.2、给静态资源加上访问前缀
有时间为了区分静态资源和controller路径,可以给直接访问的静态资源加上前缀:
spring:mvc:# 设置访问资源前缀,public static resources META-INF/resources下的静态资源必须加这个前缀才能访问static-path-pattern: /mystatic/**
那么再次访问public static resources META-INF/resources
下的静态时,就需要加上mystatic
,路径变成如下:
http://localhost:18100/bootstrap.css
http://localhost:18100/mystatic/1.jpg
http://localhost:18100/mystatic/2.jpg
http://localhost:18100/mystatic/3.jpg
http://localhost:18100/mystatic/4.jpg
1.3、自定义资源文件目录
如果不想用默认的几目录:public static resources META-INF/resources
作为静态资源的目录,那么可以自定义静态资源目录:
spring:mvc:# 设置访问资源前缀,public static resources META-INF/resources下的静态资源必须加这个前缀才能访问static-path-pattern: /mystatic/**resources:# 自定义静态资源资源目录static-locations: classpath:/cusres
自定义资源目录后,resources/resources resources/static
目录下的静态资源不能再访问,但public META-INF/resources
目录下的文件任可以访问。
2、spring boot支持jsp
2.1、如果我们想spring boot支持jsp视图
如果我们在项目中不想把jsp,css,js等文件放到resources目录下,而与resources目录下再创建一个webapp目录去放jsp文件,目录结构如下:
2.2、首先要让maven打包时把这个目录包含进去
如果pom中不设置额外的资源路径,直接打包看下效果:target目录下不会包含webapp目录
添加pom配置如下:
<resource><directory>src/main/webapp</directory><includes><include>**/*.*</include></includes><filtering>false</filtering>
</resource>
重新打包如下:
2.3、添加对spring mvc的支持
如果我们此时,直接创建一个Controller里面添加login.html,返回一个视图名字,访问
http://localhost:18100/login.html
会报如下错误:
2023-08-02 10:38:57.743 WARN 13192 --- [io-18100-exec-1] o.s.web.servlet.PageNotFound : No mapping for GET /login.html
页面没找到,因为还没有视图解析器,回想传统的spring mvc配置时,会加一个视图解析器的配置,和HandlerMapping
<!-- 配置视图解析 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/"/><property name="suffix" value=".jsp"/></bean>
<!--默认的HandlerMapping和HandlerAdapter配置形式-->
<!-- 解决springMVC响应数据乱码 text/plain就是响应的时候原样返回数据-->
<mvc:annotation-driven></mvc:annotation-driven>
添加spring mvc视图注解
@Configuration
@EnableWebMvc
public class MvcConfig {
}
再次访问,此时错误变成:
不能解析这个视图
看下@EnableWebMvc注解
如果自定义WebMvcConfigurer,那么这里就可以获取到。
2.3.1、添加视图解析器
@Configuration
@EnableWebMvc
public class MvcConfig implements WebMvcConfigurer {@Overridepublic void configureViewResolvers(ViewResolverRegistry registry) {registry.jsp();}
}
再次访问,后台不会报
而是提示找不到这个页面:
registry.jsp();这个方法会默认加上/WEB-INF/
前缀和.jsp
后缀,创建 InternalResourceViewResolver resolver = new InternalResourceViewResolver();
相关文章:

springboot对静态资源的支持
1、spring boot默认静态路径支持 Spring Boot 默认将 / 所有访问映射到以下目录:** classpath:/static classpath:/public classpath:/resources classpath:/META-INF/resources也就是说什么也不用配置,通过浏览器可以直接访问这几个目录下的文件。 1…...
WPF实战学习笔记27-全局通知
新建消息事件 添加文件:Mytodo.Common.Events.MessageModel.cs using Prism.Events; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Diagnostics;namespace Mytod…...

openSUSE安装虚拟化 qemu kvm
1) 第一种:图形界面yast安装虚拟化 左下角开始菜单搜索yast 点一下就能安装,是不是很简单呢 2)第二种: 命令行安装 网上关于openSUSE安装qemu kvm的教程比较少,可以搜索centos7 安装qemu kvm的教程,然后…...

基于linux下的高并发服务器开发(第四章)- 多进程实现并发服务器(回射服务器)
1. socket // 套接字通信分两部分: - 服务器端:被动接受连接,一般不会主动发起连接 - 客户端:主动向服务器发起连接 2.字节序转换函数 当格式化的数据在两台使用不同字节序的主机之间直接传递时,接收端必然错误…...
【程序分析】符号执行
符号执行入门 参考:https://zhuanlan.zhihu.com/p/26927127 给定一个结果,求解对应的程序输入。 经典符号执行与动态符号执行 参考:https://p1kk.github.io/2021/04/04/others/%E7%AC%A6%E5%8F%B7%E6%89%A7%E8%A1%8C&%E6%B1%A1%E7%82…...

实验笔记之——Windows下的Android环境开发搭建
好久一段时间没有进行Android开发了,最新在用的电脑也没有了Android studio了。为此,本博文记录一下最近重新搭建Android开发的过程。本博文仅为本人学习记录用(**别看) 之前博客也对配置Android做过记录 Android学习笔记之——A…...

#rust taur运行报错#
场景:在window11系统上运行 tauri桌面莹应用,提示错误。 Visual Studio 2022 生成工具 安装的sdk11 , rust运行模式是stable-x86_64-pc-window-gnu, 运行npm run tauir dev 一致失败,失败信息如下 原因:1:在window11系…...

学习购药系统源码:从前端到后端的技术探索
本文将带领读者探索购药系统源码,从前端到后端逐步深入,了解其核心功能和实现方式。我们将使用常见的Web技术,包括HTML、CSS、JavaScript、以及Python的Django框架,展示购药系统的技术奥秘。 前端技术探索 HTML结构搭建 购药系…...
第九次CCF计算机软件认证
第一题:中间数 在一个整数序列 a1,a2,…,an 中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。 在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。 给定一个…...

【计算机网络】传输层协议 -- TCP协议
文章目录 1. TCP协议的引入2. TCP协议的特点3. TCP协议格式3.1 序号与确认序号3.2 发送缓冲区与接收缓冲区3.3 窗口大小3.4 六个标志位 4. 确认应答机制5. 超时重传机制6. 连接管理机制6.1 三次握手6.2 四次挥手 7. 流量控制8. 滑动窗口9. 拥塞控制10. 延迟应答11. 捎带应答12.…...

Mac上命令
1. block端口: sudo cp /etc/pf.conf /etc/pf443.conf 编辑pf443.conf,vim /etc/pf443.conf,如 block on en0 proto udp from any to any port 9000 # block UDP port 9000 block on en0 proto tcp from any to any port 5004 # bloc…...

软件安全测试和渗透测试的区别在哪?安全测试报告有什么作用?
软件安全测试和渗透测试在软件开发过程中扮演着不同的角色,同时也有不同的特点和目标。了解这些区别对于软件开发和测试人员来说非常重要。本文将介绍软件安全测试和渗透测试的区别,以及安全测试报告在软件开发和测试过程中的作用。 一、 软件安全测试和…...

Android 从LibVLC-android到自编译ijkplayer播放H265 RTSP
概述 ijkplayer: Android/iOS video player based on FFmpeg n3.4, with MediaCodec, VideoToolbox support. 官方的描述就这么简单的一句话,但丝毫都不影响它的强大。 从LibVLC 到 ijkplayer 截止到2023.7.20 LibVLC-Android 最大的问题在与OOM,测试了…...
如何提升等保水平,减少数据泄露率
如何提升等保水平,减少数据泄露率?随着互联网的发展和数据的普及,数据泄露已经成为了企业面临的重要安全风险之一。为了保障企业的数据安全,国家制定了《网络安全法》和《信息安全等级保护管理办法》,要求企业提升等保…...

蓝桥云课ROS机器人旧版实验报告-07外设
项目名称 实验七 ROS[Kinetic/Melodic/Noetic]外设 成绩 内容:使用游戏手柄、使用RGBD传感器,ROS[Kinetic/Melodic/Noetic]摄像头驱动、ROS[Kinetic/Melodic/Noetic]与OpenCV库、标定摄像头、视觉里程计,点云库、可视化点云、滤波和缩…...

sql入门基础-2
Dml语句 对数据的增删改查 关键字 Insert增 Update删 Delete改 添加数据 给指定字段添加数据 Insert into 表明 (字段名1,字段名2) values(值1,值2); 给全部字段添加数据--(根据位置对应添加到字段下) Insert into 表名 values…...

uni-app:实现表格多选及数据获取
效果: 代码: <template><view><scroll-view scroll-x"true" style"overflow-x: scroll; white-space: nowrap;"><view class"table"><view class"table-tr"><view class&quo…...

【图论】树上差分(点差分)
一.题目 输入样例: 5 10 3 4 1 5 4 2 5 4 5 4 5 4 3 5 4 3 4 3 1 3 3 5 5 4 1 5 3 4 输出样例:9 二 .分析 我们可以先建一棵树 但我们发现,这样会超时。 所以,我们想到树上差分 三.代码 /* 5 10 3 4 1 5 4 2 5 4 5 4 5 4 3 5 …...
【wrk2】轻量级性能测试工具
1、背景 wrk/wrk2是针对http协议的基准测试工具,特点是在单击多核CPU的前提下,通过系统自带的高性能I/O机制【epoll、kqueue等】,以多线程和事件模式,在指定的时间和请求范围下对目标机器产生负载。特点如下: 优势劣势1、安装简单、容易上手 2、基于系统自身的高性能机制…...

华为云低代码平台Astro Canvas 搭建汽车展示大屏——实验指导手册
实验背景 大屏应用Astro Canvas是华为云低代码平台Astro的子服务之一,是以数据可视化为核心,以屏幕轻松编排,多屏适配可视为基础,用户可通过图形化界面轻松搭建专业水准的数据可视化大屏。例如汽车展示大屏、监控大屏、项目开发大…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

Keil 中设置 STM32 Flash 和 RAM 地址详解
文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存
文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...

R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...

无人机侦测与反制技术的进展与应用
国家电网无人机侦测与反制技术的进展与应用 引言 随着无人机(无人驾驶飞行器,UAV)技术的快速发展,其在商业、娱乐和军事领域的广泛应用带来了新的安全挑战。特别是对于关键基础设施如电力系统,无人机的“黑飞”&…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...