Springboot系列(四)web静态资源配置详解
Springboot系列(四)web静态资源配置
往期精彩
引言:
SpringBoot web项目开发中往往会涉及到一些静态资源的使用,比如说图片,css样式,js等等,今天我们来讲讲这些常见的静态资源应该放在哪个位置,怎么放在自己想放的位置。
目录
- 项目创建
- 资源文件配置与访问
1.Springboot中默认的静态资源路径
2.自定义静态资源路径
3.两种访问静态资源的方式 - 其他静态资源路径配置方式
1.继承WebMvcConfigurerAdapter
2.优化配置
1. 项目创建
我们先创建一个空的项目,项目的依赖配置为starter-web依赖,创建好的项目下面有一个resources文件夹,里面有一些空的默认的文件夹,然后有一个配置文件。
templates文件下面一般是放置模板页面的,比如html,jsp之类的,static文件一般是是放置静态资源,比如说,图片,文件等等。
我们放置了文件或者是图片就需要访问这个文件,看看怎么才能有效的实现访问这些静态资源文件,以及自己访问自己定义好的资源访问路径。
2. 资源文件访问与配置
一般来说,我们是做前后端分离的,Springboot就作为后端,但是Springboot依然支持有html文件等,实现前后端在一个项目里面。也就是Springboot web项目。
首先,我们在templates文件夹下面创建一个名为index的html5页面,然后随便写一点东西,然后在配置文件中,配置一个项目启动端口。
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直接访问这个方法。它还有一些其他的参数,这里就不讲解了。后面会出一期Springboot常用注解的说明。有兴趣的可以 wx 搜索 全栈学习笔记。
到这里,我们就可以利用自定义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方式访问静态资源。
Springboot系列(四)web静态资源配置详解的更多相关文章
- SpringBoot系列(十二)过滤器配置详解
SpringBoot(十二)过滤器详解 往期精彩推荐 SpringBoot系列(一)idea新建Springboot项目 SpringBoot系列(二)入门知识 springBoot系列(三)配置文件 ...
- springboot系列(三)配置文件详解
目录 properties 文件 1.语法 2.优先级 3.自定义数据配置 4.获取自定义数据配置 1.通过prefix获取 yml文件 1.语法 2.优先级 3.自定义数据配置. 4.获取自定义数据 ...
- SAP ECC6安装系列四:安装过程详解
原作者博客 http://www.cnblogs.com/Michael_z/ ======================================== 续接上篇,我们终于按下了 “Next” ...
- Spring系列(四):Spring AOP详解和实现方式(xml配置和注解配置)
参考文章:http://www.cnblogs.com/hongwz/p/5764917.html 一.什么是AOP AOP(Aspect Oriented Programming),即面向切面编程, ...
- java web.xml配置详解
1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...
- 160329(二)、web.xml配置详解
1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...
- Java Web学习总结(19)——web.xml配置详解
1.启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 2.紧急着,容创建一个Servl ...
- 构建安全的Xml Web Service系列之wse之错误代码详解
原文:构建安全的Xml Web Service系列之wse之错误代码详解 WSE3.0现在还没有中文版的可以下载,使用英文版的过程中,难免会遇到各种各样的错误,而面对一堆毫无头绪的错误异常,常常会感到 ...
- Maven系列--web.xml 配置详解
一 .web.xml介绍 启动一个WEB项目的时候,WEB容器会去读取它的配置文件web.xml,读取<listener>和<context-param>两个结点. 紧接着,容 ...
随机推荐
- Fortify Audit Workbench 笔记 Cross-Site Scripting-Persistent
Cross-Site Scripting: Persistent Abstract 向 Web 浏览器发送非法数据会导致浏览器执行恶意代码. Explanation Cross-Site Script ...
- Ajax上传数据和上传文件(三种方式)
Ajax向后端发送数据可以有三种方式:原生Ajax方式,jQuery Ajax方式,iframe+form 方式(伪造Ajax方式) <!DOCTYPE html> <html la ...
- h5 移动端适配方案思考
基础概念 CSS像素(CSS pixels) 这个是浏览器使用的抽象单位,用来精确度量网页上的内容.平时经常写的width:100px;height:100px;都是与设备无关的. 设备独立像素(de ...
- MATLAB神经网络(4) 神经网络遗传算法函数极值寻优——非线性函数极值寻优
4.1 案例背景 \[y = {x_1}^2 + {x_2}^2\] 4.2 模型建立 神经网络训练拟合根据寻优函数的特点构建合适的BP神经网络,用非线性函数的输入输出数据训练BP神经网络,训练后的B ...
- Simulink仿真入门到精通(十一) 模块的封装
当用户编写了自定义的S函数或者使用Simulink标准库中的模块搭建子系统后,可以通过封装为其设计显示外观,追加参数对话框. 封装是构建一个以对话框为接口的交互界面的过程,它将复杂的模块逻辑关系隐藏起 ...
- ES6中的find与filter的区别
一直以来以为find和filter是一样的效果,最近在梳理,才发现是不一样的. 首先,filter和find区别:filter返回的是数组,find返回的是对象. 注意:find()找到第一个元素后就 ...
- js 小练习题
<script> /*1.结论,IIFE中运行顺序3,1,执行test(4),会传递参数*/ /*var a=5; var test = (function(a){ console.log ...
- oracle中plsql练习-----在控制台输出1到100以内的素数。
一.思路:首先需要知道素数的概念即质数定义为在大于1的自然数中,除了1和它本身以外不再有其他因数. 中心思想是,外循环所有的自然数,内循环折半查询,增加代码的速度,注意:从1开始,需要大于1,但是pl ...
- python下使用sort()函数对目录下文件名进行多条件排序
目录 1.基础函数 2.例子解析 参考 1.基础函数 a.sort()函数 sort()函数的作用是对列表内容进行正向排序,直接在原列表进行修改,返回的是修改后的列表. lists =[1, 5, 1 ...
- Django模板层学习笔记
一. 前言 Django模板层的知识包括标签.过滤器.自定义标签.自定义过滤器以及inclusion_tag,最重要的是模板的继承和导入. 首先模板层最重要的是模板语法,之前我们提过涉及到变量用模板语 ...