SpringBoot web静态资源配置详解
作者:耶亚希 发布时间:2023-09-24 14:13:26
引言:
SpringBoot web项目开发中往往会涉及到一些静态资源的使用,比如说图片,css样式,js等等,今天我们来讲讲这些常见的静态资源应该放在哪个位置,怎么放在自己想放的位置。
1、 项目创建
我们先创建一个空的项目,项目的依赖配置为starter-web依赖,创建好的项目下面有一个resources文件夹,里面有一些空的默认的文件夹,然后有一个配置文件。
templates文件下面一般是放置模板页面的,比如html,jsp之类的,static文件一般是是放置静态资源,比如说,图片,文件等等。
我们放置了文件或者是图片就需要访问这个文件,看看怎么才能有效的实现访问这些静态资源文件,以及自己访问自己定义好的资源访问路径。
2、资源文件访问与配置
一般来说,我们是做前后端分离的,Springboot就作为后端,但是Springboot依然支持有html文件等,实现前后端在一个项目里面。也就是Springboot web项目。
首先,我们在templates文件夹下面创建一个名为index的html5页面,然后随便写一点东西,然后在配置文件中,配置一个项目启动端口。
配置文件端口配置不再讲解,前一期里面有配置文件详解,不会的可以回去看看。
启动项目,浏览器输入:localhost:8088/index.html
你会发现页面是404,这时候我们是访问不了这个页面的。然后你可能会说localhost:8088/templates/index.html,你会发现都不行都不行!
因为Springboot的默认资源配置里面没有这个templates路径,但是有static路径。
(1)Springboot中默认的静态资源路径:
classpath:/static;
classpath:/public;
classpath:/resources;
classpath:/META-INF/resources
classpath 在项目中就相当于src/main/resources文件夹.
就是说如果你把html文件直接放在static路径下面是可以直接访问的,有两种访问方式。
当你添加了start-web的依赖,resources下面是会默认生成一个static文件夹以及templates文件夹。
(2)自定义静态资源路径。
spring.resources.static-locations=classpath:templates/
我们配置了静态资源路径映射之后,我们只能访问这个路径下面的资源,也就是相当于自定义了静态资源路径,就是说默认的静态资源路径都会失效。
(3)两种访问静态资源的方式
一种是直接通过特定的URL访问:我们配置好后,启动项目,浏览器输入:localhost:8088/index.html 就可以正常访问我们的静态资源了。
效果图如下:
然后还有一种访问资源的方法。是使用代码是实现的。
我们在和启动文件同级目录下面创建一个controller文件夹,然后创建一个Testcontroller,代码如下:
/**
* @author 全栈学习笔记
* @date 2020/4/12 12:20
* @description
*/
@Controller
public class TestController {
@RequestMapping("/getHtml")
public String getHtml(){
return "index.html";
}
}
说明:这个@Controller ,意思标记这个类为控制类,或者说他是一个Springmvc controller对象,标记之后,默认这个类的所有方法返回的是一个页面。然后这个@RequestMapping的注解是一个用来处理请求地址映射的注解,可用于类或方法上。用于方法之上时,你可以通过URL直接访问这个方法。
到这里,我们就可以利用自定义URL访问静态资源了。在浏览器里面输入:localhost:8088/getHtml 也能正常访问静态资源。图片也是一样的。
3、其他静态资源路径配置方式
(1)继承WebMvcConfigurerAdapter
我们通过重写这个类的addResourceHandlers方法,定义资源路径
/**
* @author 全栈学习笔记
* @date 2020/4/12 15:46
* @description
*/
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("/**").addResourceLocations("/","classpath:templates/");
super.addResourceHandlers(registry);
}
}
(2)优化配置
你会看到之前的那种利用代码的URL路径访问静态资源文件的写法,我们需要在返回的地方写上文件的名称以及文件的后缀名,当我们要返回某一类型的文件时,这样写就相对比较麻烦,所以我们可以通过以下配置来解决这个问题。
#加前缀
spring.mvc.view.prefix=/
#加后缀
spring.mvc.view.suffix=.html
通过以上的配置,我们之前的controller里面的方法返回就可以写成这样。
@RequestMapping("/getHtml")
public String getHtml(){
return "index";
}
总结:
静态资源配置路径的两种常用方式: 一种是默认配置,一种是自定义配置,自定义配置可以是代码配置,可以是配置文件里面配置。这两种配置方式都会使原来默认的配置方式失效。
静态资源的访问方式有两种:一种是自己用代码定义路径,然后访问,一种是直接利用特定的URL方式访问静态资源。
来源:https://blog.csdn.net/m0_45270667/article/details/109144676


猜你喜欢
- 本文实例为大家分享了java * 实现在线人数统计的具体代码,供大家参考,具体内容如下1.在工程中创建监听类SessionListener
- 本文实例为大家分享了C#获取计算机信息的具体代码,供大家参考,具体内容如下using System;using System.Configu
- java Hibernate多对多映射前言:一、单向多对多 单向多对多的例子用人和职位来举例,一个人可以有多个职位
- 本文实例讲述了C# SQLite事务操作方法。分享给大家供大家参考,具体如下:在 C#中执行Sqlite数据库事务有两种方式:SQL代码和C
- 我们在做winform应用的时候,大部分情况下都会碰到使用多线程控制界面上控件信息的问题。然而我们并不能用传统方法来解决这个问题,下面我将详
- 前言我们在实际项目中,除了会碰到一对一的情况,还有一对多的情况,比如一个用户可以有多辆车,而一辆车只能有一个用户等等,今天我们就来一起学习下
- Kotlin的对象表达式与Java中的匿名内部类的主要区别:匿名内部类只能指定一个父类型,但对象表达式可以指定0~N个肤类型。一、对象表达式
- 找入口对 Spring 有一定基础的同学一定知道,请求入口是DispatcherServlet,所有的请求最终都会落到doDispatch方
- 一.线程不安全多线程的执行环境中,程序的执行结果和预期的结果不符合,这就称为发生了线程不安全现象二.那些情况导致了线程不安全?大致分为以下5
- logback输出日志屏蔽quartz的debug等级日志在一个spring的老项目中,使用了logback来作为日志管理,logback.
- 上一篇:瑞吉外卖项目:新增员工一. 员工信息分页查询1. 需求分析当系统中的用户越来越多页面展示不完整,我们需要通过实现分页的方式去展示员工
- 做个网站的安卓客户端,用户安装到自己手机上,如果我出了新版本怎么办呢?要有版本更新功能。 本来版本检测最好可以自动进行。但如果每次开启程序,
- SpringBoot启动自动终止也不报错Error starting ApplicationContext. To display the
- 本文实例讲述了Java Swing实现JTable检测单元格数据变更事件的方法。分享给大家供大家参考,具体如下:在JTable的初级教程中往
- 前言大家都知道在Android WebView使用中,经常需要H5页面和Native页面进行交互,比如在网页上点击分享按钮,调用本地分享接口
- 记录一下使用IDEA创建servlet并使用Tomcat本地部署的过程。需要安装好的软件首先IDEA社区版不支持Java EE,因此要使用U
- 前言《JAVA打砖块》游戏是自制的游戏。玩家操作一根萤幕上水平的“棒子”,让一颗不断弹来弹去的&am
- 命令模式定义:将请求封装成对象,这可以让你使用不同的请求、队列、或者日志来参数化其他对象。何时使用命令模式?当需要将发出请求的对象和执行请求
- 1、介绍官网地址:https://www.yuque.com/easyexcel特点:1、Java领域解析、生成Excel比较有名的框架有A
- 接收 / 返回文本消息①接收/返回文本消息原理说明当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的UR