87.【SpringBoot-01】(八)

简介: 87.【SpringBoot-01】

2.首页定制⭐

(1).放在 static 或 public 或 resource (不能被controller访问)

静态资源文件夹说完后,我们继续向下看源码!可以看到一个欢迎页的映射,就是我们的首页!

@Bean
public WelcomePageHandlerMapping welcomePageHandlerMapping(ApplicationContext applicationContext,
                                                           FormattingConversionService mvcConversionService,
                                                           ResourceUrlProvider mvcResourceUrlProvider) {
    WelcomePageHandlerMapping welcomePageHandlerMapping = new WelcomePageHandlerMapping(
        new TemplateAvailabilityProviders(applicationContext), applicationContext, getWelcomePage(), // getWelcomePage 获得欢迎页
        this.mvcProperties.getStaticPathPattern());
    welcomePageHandlerMapping.setInterceptors(getInterceptors(mvcConversionService, mvcResourceUrlProvider));
    return welcomePageHandlerMapping;
}

点进去继续看

private Optional<Resource> getWelcomePage() {
    String[] locations = getResourceLocations(this.resourceProperties.getStaticLocations());
    // ::是java8 中新引入的运算符
    // Class::function的时候function是属于Class的,应该是静态方法。
    // this::function的funtion是属于这个对象的。
    // 简而言之,就是一种语法糖而已,是一种简写
    return Arrays.stream(locations).map(this::getIndexHtml).filter(this::isReadable).findFirst();
}
// 欢迎页就是一个location下的的 index.html 而已
private Resource getIndexHtml(String location) {
    return this.resourceLoader.getResource(location + "index.html");
}
/ 拦截所有请求 包括静态资源和动态请求 但是不拦截jsp
/*拦截所有请求 包括静态资源和动态请求 也拦截jsp
区别就在于/ 不拦截jsp /*拦截jsp
/* 是拦截所有的文件夹,不包含子文件夹
/** 是拦截所有的文件夹及里面的子文件夹
相当于/*只有后面一级
/** 可以包含多级

欢迎页,静态资源文件夹下的所有 index.html 页面;被 /** 映射。

比如我访问 http://localhost:8080/ ,就会找静态资源文件夹下的 index.html

新建一个 index.html ,在我们上面的3个目录中任意一个;然后访问测试 http://localhost:8080/ 看结果!

(2).放在template目录下 (可以被controller访问)

测试能够直接访问能行不?---不行。在template目录下的所有页面,只能通过controller来跳转。

controller层

package com.jsxs.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
//在template目录下的所有页面,只能通过controller来跳转。
@Controller
// 这里我们
public class indexController {
    @RequestMapping("/index")
    public String index(Model model){
        model.addAttribute("msg","Hello JSXS");
        return "index";
    }
}

这在里会报404的错误,因为我们还需要一个引擎

报错505错误,是因为我们映射的地址不能和下面的地址一致。

我们导入Thymeleaf的依赖之后:访问成功

全局查找:ctrl+f 在本类中进行查找某个方法/属性

shift+sgift 在整个idea中搜索某个类

3.图标定制

把favicon.ico放在以下目录,会自动转换成网站的图标

"classpath:/META-INF/resources/"
"classpath:/resources/"
"classpath:/static/"
"classpath:/public/"

优先级 META-INF/resources > resources > static(默认) > public

如果刷新不出来 直接进行浏览器强制刷新 ctrl +f5 !!!!!!!

(十一)、Thymeleaf模板引擎

1.模板引擎

前端交给我们的页面,是html页面。如果是我们以前开发,我们需要把他们转成jsp页面,jsp好处就是当我们查出一些数据转发到JSP页面以后,我们可以用jsp轻松实现数据的显示,及交互等

jsp支持非常强大的功能,包括能写Java代码,但是呢,我们现在的这种情况,SpringBoot这个项目首先是以jar的方式,不是war,像第二,我们用的还是嵌入式的Tomcat,所以呢,他现在默认是不支持jsp的

那不支持jsp,如果我们直接用纯静态页面的方式,那给我们开发会带来非常大的麻烦,那怎么办呢?

SpringBoot推荐你可以来使用模板引擎

模板引擎,我们其实大家听到很多,其实jsp就是一个模板引擎,还有用的比较多的freemarker,包括SpringBoot给我们推荐的Thymeleaf,模板引擎有非常多,但再多的模板引擎,他们的思想都是一样的,什么样一个思想呢我们来看一下这张图:

模板引擎的作用就是我们来写一个页面模板,比如有些值呢,是动态的,我们写一些表达式。而这些值,从哪来呢,就是我们在后台封装一些数据。然后把这个模板和这个数据交给我们模板引擎,模板引擎按照我们这个数据帮你把这表达式解析、填充到我们指定的位置,然后把这个数据最终生成一个我们想要的内容给我们写出去,这就是我们这个模板引擎,不管是jsp还是其他模板引擎,都是这个思想。只不过呢,就是说不同模板引擎之间,他们可能这个语法有点不一样。其他的我就不介绍了,我主要来介绍一下SpringBoot给我们推荐的Thymeleaf模板引擎,这模板引擎呢,是一个高级语言的模板引擎,他的这个语法更简单。而且呢,功能更强大。

我们呢,就来看一下这个模板引擎,那既然要看这个模板引擎。首先,我们来看SpringBoot里边怎么用。

2.引入Thymeleaf

怎么引入呢,对于springboot来说,什么事情不都是一个start的事情嘛,我们去在项目中引入一下。给大家三个网址:

Thymeleaf 官网:
https://www.thymeleaf.org/

Thymeleaf 在Github 的主页:
https://github.com/thymeleaf/thymeleaf

Spring官方文档:找到我们对应的版本


https://docs.spring.io/spring-boot/docs/2.7.7/reference/htmlsingle/#using.build-systems.starters

找到对应的pom依赖:可以适当点进源码看下本来的包!

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


相关文章
|
10月前
|
负载均衡 监控 Dubbo
91.【SpringBoot-03】(二)
91.【SpringBoot-03】
48 0
|
9月前
|
Java 应用服务中间件 容器
|
10月前
|
Java 数据库 数据安全/隐私保护
89.【SpringBoot-02】(八)
89.【SpringBoot-02】
27 0
|
10月前
87.【SpringBoot-01】(三)
87.【SpringBoot-01】
37 0
|
10月前
|
XML Java 数据格式
87.【SpringBoot-01】(二)
87.【SpringBoot-01】
40 0
|
10月前
|
XML Java 数据库连接
89.【SpringBoot-02】(三)
89.【SpringBoot-02】
37 0
|
10月前
|
Java 测试技术 容器
87.【SpringBoot-01】(六)
87.【SpringBoot-01】
43 0
|
监控 安全 Dubbo
SpringBoot详解(下)
SpringBoot详解(下)
SpringBoot详解(下)
|
XML 开发框架 运维
|
JavaScript 小程序 Java
教你优雅的实现 SpringBoot 并行任务
教你优雅的实现 SpringBoot 并行任务
教你优雅的实现 SpringBoot 并行任务