[SpringBoot-web系列】前文
SpringBoot-web开发(一): 静态资源的导入(源码分析)


目录

  • 一、首页
    • 1. 源码分析
    • 2. 访问首页测试
  • 二、动态页面
    • 1. 动态资源目录templates
    • 2. 访问测试
  • 三、图标设置

本文基于上篇:SpringBoot-web开发(一): 静态资源的导入(源码分析)

一、首页

同样在WebMvcAutoConfugure类中的自动配置适配类WebMvcAutoConfigurationAdapter中有三个方法,是关于首页的

1. 源码分析

我们通常将首页放在SpringBoot规定好的静态目录中,接下来分析源码,从源码中找到四个静态资源目录

首先是欢迎页处理映射类WelcomePageHandler,它通过@Bean注解被注入到bean中,它通过两种方式获得资源路径:

  • 自定义的资源路径this.mvcProperties.getStaticPathPattern()
  • 调用gerWelcomPage获得资源路径

其中getWelcomPage方法中,有个getStaticLocations方法,返回的locations就是四个静态资源路径

String[] locations = getResourceLocations(this.resourceProperties.getStaticLocations());
"classpath:/META-INF/resources/":就是上述的webjars
"classpath:/resources/":reources目录下的resources目录,不存在自己新建
"classpath:/static/":resources目录下的static目录
"classpath:/public/":resources目录下的public目录,不存在自己新建


getWelcomePage方法中还调用了getIndexHtml方法,用于配置首页,位置就是上述locations的下的index.html

private Resource getIndexHtml(String location) {return this.resourceLoader.getResource(location + "index.html");
}

总结

SpringBoot项目只有src目录,没有webapp目录,会将静态访问映射到其自动配置的静态目录,我们将首页index.html文件放置静态资源四个目录任意一个位置即可直接访问加载

2. 访问首页测试

我们可以把首页index.html放入以下任意一个目录

"classpath:/META-INF/resources/":就是上述的webjars
"classpath:/resources/":reources目录下的resources目录,不存在自己新建
"classpath:/static/":resources目录下的static目录
"classpath:/public/":resources目录下的public目录,不存在自己新建

这里在resource目录下的public目录下新建index.html表示首页

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>首页</title>
</head>
<body>
<h1>首页</h1>
</body>
</html>

然后运行主程序测试,访问localhost:8080,成功加载到了首页


二、动态页面

通常情况下,我们需要通过请求跳转到一些页面,因此我们需要写一个controller进行视图跳转,并进行一些处理,这就是动态页面:先请求服务器,访问后台应用程序,然后再转向到页面

那么动态页面放哪呢?

1. 动态资源目录templates

resources下,除了publicresourcesstaic三个静态目录,还有一个templates目录,

  • 前三个目录用来放静态页面,将index.html首页放入其中直接可以映射访问

  • templates用来放动态页面,如果我们将index.html放在其中,则默认就会跳转到/templates/index.html

因此,我们可以将我们的页面放入该目录下,通过请求加载到页面,注意:

  • springboot项目默认是不允许直接访问templates下的文件的,是受保护的。

  • 如果要访问templates下的文件,需要模板引擎的支持,推荐使用thymeleaf,这里导入thymeleaf依赖

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

2. 访问测试

然后,我们将上述index.html移入templates包中

然后再编写一个IndexController

package com.zsr.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;@Controller
public class IndexController {@RequestMapping("/index")public String index() {return "index";}
}

重新启动主程序访问测试,访问/index,成功显示首页


三、图标设置

  • 早些版本中Spring Boot对Favicon进行了默认支持,只需要将.ico图标文件放在四个静态资源目录任意一个即可,并需要在application.properties中通过如下配置关闭默认的图标即可
spring.mvc.favicon.enabled=false    #关闭
  • 但在Spring Boot项目的issues中提出,如果提供默认的Favicon可能会导致网站信息泄露。如果用户不进行自定义的Favicon的设置,而Spring Boot项目会提供默认的上图图标,那么势必会导致泄露网站的开发框架。

  • 因此,在Spring Boot2.2.x中,将默认的favicon.ico移除,同时也不再提供上述application.properties中的属性配置

在这以后,我们需要在index.html首页文件中进行配置

1. 将 .ico图片放在 resources 文件夹下的 static 文件夹下

2. 在首页 index.html 中引入图片

<link rel="icon" href="/favicon.ico">

3. 访问测试

注:可能会出现测试不成功的情况,建议清除浏览器缓存再刷新

SpringBoot-web开发(二): 页面和图标定制(源码分析)相关推荐

  1. EOS智能合约开发(二十三)nodeos调用mongo_db_plugin源码分析

    前几篇文章,我们已经深入了解了mongodb,我们从mongodb安装配置,history_plugin与mongo_db_plugin区别做了深入探讨.今天我们从源码角度分析,nodeos是如何调用 ...

  2. 分布式定时任务—xxl-job学习(四)——调度中心web页面端api调用源码分析

    分布式定时任务-xxl-job学习(四)--调度中心web页面端api调用源码分析 前言 一.controller目录下非controller类 1.1 PermissionLimit自定义注解 1. ...

  3. activiti学习(二十一)——流程虚拟机源码分析(三)——从进入到离开userTask

    前言 承接上文<activiti学习(二十)--流程虚拟机源码分析(二)--从开始节点离开到下个节点前>,假设execution接下来进入的节点是userTask,本文分析一下进入user ...

  4. SpringBoot-web开发(一): 静态资源的导入(源码分析)

    目录 方式一:通过WebJars 1. 什么是webjars? 2. webjars的使用 3. webjars结构 4. 解析源码 5. 测试访问 方式二:放入静态资源目录 1. 源码分析 2. 测 ...

  5. 基于比原链开发Dapp(四)-bufferserver源码分析

    ##简介 ​    本章内容主要直接分析bufferserver源码,也就是比原链官方Dapp-demo的后端接口,里面包含了UTXO的托管逻辑.账单逻辑等,还会介绍一些改进的源码内容. [储蓄分红合 ...

  6. Springboot+vue开发的图书借阅管理系统项目源码下载-P0029

    前言 图书借阅管理系统项目是基于SpringBoot+Vue技术开发而来,功能相对比较简单,分为两个角色即管理员和学生用户,核心业务功能就是图书的发布.借阅与归还,相比于一些复杂的系统,该项目具备简单 ...

  7. Springboot快速开发-书本信息管理系统(项目源码)

    [我后续会发一个资源包,里面是所有代码,数据库表设计也有,大学生可以直接用,导入数据库运行,再导入后端项目和前端项目,再去网页运行就好了,效果图下面有] 1.考核要求: 数据库:MYSQL5.7+ 后 ...

  8. Android wifi探究二:Wifi framework层源码分析

    上一篇博客初步认识了wpa_supplicant的作用和使用方法,并且尝试着梳理了wifi的大框架,不过,java层的框架我们忽略了,没有分析,也就是说上一篇博客简单的指出了wifi代码的大框架,那么 ...

  9. 【SpringBoot】十二、@Scheduled定时任务(源码)

    @Scheduled是Spring task的基于注解的使用方法.Spring task是spring自主开发的轻量级定时任务框架.但是本身不支持持久化,也没有推出官方的分布式集群模式,只能靠开发者在 ...

最新文章

  1. ITAA在线试学用户使用说明
  2. async/await的实质理解
  3. 机器学习实战:训练自己的YoloV5 [草稿-待完成]
  4. c语言有图小游戏,【图片】C语言小游戏~贪吃蛇【c语言吧】_百度贴吧
  5. Ubuntu16.04直接修改root密码
  6. 塞尔达传说雷电大剑位置_《塞尔达传说:荒野之息》全收集——双手武器(1)...
  7. 天公不作美 SpaceX再次推迟星链卫星发射
  8. vue 监听div滚动事件
  9. 51nod 平均数(二分+树状数组)
  10. Atitit 算法之道 之压缩算法 attilax总结 1. 压缩算法与压缩格式区别 1 2. 压缩算法于格式 1 2.1. H264 mpg jpg MP3 2 2.2. Zip rar 。L
  11. Python使用TCP通讯例子
  12. 学生社区(学校交流社区)网站源码推荐
  13. 如何生成EAN13流水号条形码
  14. 第一模块-开发基础-第一章python语法
  15. 软考案例题目答题技巧
  16. 【linux】md5sum 命令详解
  17. build tools
  18. linux怎么生成图形,如何在Ubuntu 16.04中创建GIF动态图片
  19. 软件开发模型/原型法/瀑布模型/螺旋模型
  20. 网易互娱2017在线笔试——题目一:电子数字

热门文章

  1. 一图了解git常用开源许可证书
  2. 2022-2028年中国绿冻石行业市场研究及前瞻分析报告
  3. VSCode 安装 Go 插件、gopls 是个什么东东
  4. libIlmImf-2_2.so.22 :cannot open shared object file :No such file or direct
  5. “勤奋”,是能让你走出低谷最有效的方法
  6. 【C#】枚举_结构体_数组
  7. pyg2plot_画图
  8. Pytorch Bi-LSTM + CRF 代码详解
  9. 高并发下的接口幂等性解决方案
  10. 人工智能训练云燧T10