java路径问题:springboot的前段静态资源路径、java后端读取文件路径、直接访问html

您所在的位置:网站首页 前后对比的段落怎么写 java路径问题:springboot的前段静态资源路径、java后端读取文件路径、直接访问html

java路径问题:springboot的前段静态资源路径、java后端读取文件路径、直接访问html

2024-07-12 15:29:14| 来源: 网络整理| 查看: 265

路径问题!路径问题!路径问题!

这个问题坑我两次了,这次必须整理一下。杜绝在此入坑,也祝各位码农们出坑。

不过需要说的地方还挺多的,我尽量精简着说。

 

来,TMD走起。

 

大概内容:

1、相对路径和绝对路径

2、springboot项目web中前段静态资源的路径配置

3、静态文件路径配置(包括java后端读取文件路径)

 

走:

一、相对路径和绝对路径(简单一说)

绝对路径:绝对路径就是完整的路径。如:F:\workspace\idea\diamond

相对路径:由这个文件所在的路径引起的跟其它文件(或文件夹)的路径关系。如:idea\diamond

提一下,斜杠“/”和反斜杠“\”:

    在 java 中,文件的路径一般用 /     如果是 windows 系统环境,那么路径一般使用 \,但是 \ 又需要转义,所以我们会看到很多使用 \\ 的情况     windows 系统也可以使用 /,混用 \\ 和 / 也是可以的     如果是 linux、unix 或 macOS 等系统,路径一般用 /     总结:由于 / 在不同系统环境中都可以生效,所以最好使用这个。

二、web中前段静态资源的路径配置(springboot为例)

先来一段配置代码,以yml为例。(properties相同,只是回车换位点.了而已)

spring: thymeleaf: mode: HTML5 encoding: UTF-8 suffix: .html prefix: classpath:/templates/ cache: false servlet: content-type: text/html mvc: static-path-pattern: /static/** #添加后静态资源必须以/static开头

目录结构:

1、配置controller返回html的前缀后缀    配置文件中的“ suffix: .html ”是来配置controller中返回值得后缀;

                           “prefix: classpath:/templates/”是配置前缀,也是配置返回值的起始路径的。

如上配置,则controller返回值如果为字符串“hello"的话,就相当于返回了,classpath:/templates/hello.html,控制层会找到这个文件并返回给前段。

2、前段静态资源路径格式配置。(这里管的是静态资源路径啊)

spring: mvc: static-path-pattern: /static/** #添加后静态资源必须以/static开头

配制了static-path-pattern: /static/**之后,前段资源的路径必须以static开头才能访问到,如下

以上两种写法(加上static/或者/static/)均可以。

当把这个配置项除掉时,则不加static进行访问。测试如下:

注释配置项:

# mvc: # static-path-pattern: /static/** #添加后静态资源必须以/static开头

测试内容及结果:(加上static/或者/static/则访问不到,路径应从static下开始写)

重点来了! 三、静态文件路径配置

配置项(如下配置其实不用配置):

spring: resources: static-locations: classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/

 

以上配置没有任何意义,为啥囊,往下走↓↓↓↓↓↓↓ 1、spring boot默认加载文件的路径: /META-INF/resources//resources//static//public/

可以从一下springboot源码看出来,

这个与我们上述配置结果是一样的,但我们不添加spring.resource.static-locations配制时,springboot默认文件加载路径就是上述4个地方,springboot会依次去4个目录下找文件。先找到为准,就不在往下找了。

那么,还要这个配置文件干啥:

当然是特殊情况存在的时候啊,对吧。

比如:

2、应用

注意:spring.resources.static-locations与spring.mvc.static-path-pattern是搭配使用的。比如spring.mvc.static-path-pattern配置为/static/**则url地址也一样要多加上static。以下①、②适用。③没去验证。

①访问项目外的文件。如:我在4个默认项后添加了“,file:C:/Users/groot/Desktop/image/” spring: thymeleaf: mode: HTML5 encoding: UTF-8 suffix: .html prefix: classpath:/templates/ cache: false servlet: content-type: text/html resources: static-locations: classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,file:C:/Users/groot/Desktop/image/

我就可以通过浏览器输入url:http://localhost:8080/timg.jpg直接访问到C:/Users/groot/Desktop/image/下的文件了。

注意:如果前面配制了spring.mvc.static-path-pattern: /static/**的话url地址就要输入http://localhost:8080/static/timg.jpg才行。

图片存放位置:

 

②访问项目内的文件(比如不需要controller直接访问html或者图片等),还是很实用的。

实现方法:

Ⅰ 、直接把文件放在resources/static下。(springboot默认的路径)

Ⅱ、增加static-locations配置项。如,我想直接访问resources\templates下的html我就在配置项中增加了,classpath:/templates/。

spring: thymeleaf: mode: HTML5 encoding: UTF-8 suffix: .html prefix: classpath:/templates/ cache: false servlet: content-type: text/html resources: static-locations: classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,classpath:/templates/

目录结构:

访问地址:http://localhost:8080/reportDetail.html

效果:

③java代码中获取文件地址怎么写

Ⅰ 、获取静态文件配置下的文件

配置文件中spring.resources.static-locations项直接不配。或者配置默认的4项。

读取目标文件的位置:

java代码中位置的写法和结果如下:(这里是在导出excel是输入模板的路径,其他情况下完全相同)

params = new TemplateExportParams("\\templates\\excel\\B-N-Fuji.xls", true);//√可以读到 // params = new TemplateExportParams("/templates/excel/B-N-Fuji.xls", true);//x读不到 // params = new TemplateExportParams("templates/excel/B-N-Fuji.xls", true);//√可以读到

Ⅱ、获取src下的文件

竟然可以直接获取src下的文件,并且还是相对路径的写法。0.0太黑了。难道是java默认src就是根?如D:盘一样前边不需要斜杠/?没研究过。望大侠告知。

目标文件:

 

java代码中位置的写法和结果如下:(这里是在导出excel是输入模板的路径,其他情况下完全相同)

// params = new TemplateExportParams("/excelsrc/B-N-Fuji.xls", true);//x找不到 // params = new TemplateExportParams("\\excelsrc\\B-N-Fuji.xls", true);//x找不到 // params = new TemplateExportParams("/src/excelsrc/B-N-Fuji.xls", true);//x找不到 params = new TemplateExportParams("src/excelsrc/B-N-Fuji.xls", true);//√可以找到

Ⅲ、获取自定义位置的文件

     可以写绝对路径、也可以项上边配置静态文件路径一样配置好了之后,使用相对路径。就不啰嗦了。

 

 

 



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭