关于springboot,web开发的准备知识

关于springboot,web开发的准备

  1. 关于静态资源
  2. 首页和图标定制
  3. Thmeleaf的基本使用方法

1. 关于静态资源

从源码入手
根据WebProperties.java的源码

public static class Resources {

		private static final String[] CLASSPATH_RESOURCE_LOCATIONS = { "classpath:/META-INF/resources/",
				"classpath:/resources/", "classpath:/static/", "classpath:/public/" };

可以看到我们可以将静态资源放在

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

这些目录下
关于springboot,web开发的准备知识也可以直接在resources下直接放
经过测试发现,优先级最低的是public,然后是static,再是resources,最高的是根目录

2. 首页和图标定制

首页

根据WebMvcAutoConfiguration源码

private Optional<Resource> getWelcomePage() {
			String[] locations = getResourceLocations(this.resourceProperties.getStaticLocations());
			return Arrays.stream(locations).map(this::getIndexHtml).filter(this::isReadable).findFirst();
		}
private Resource getIndexHtml(String location) {
return this.resourceLoader.getResource(location + "index.html");
		}

可以看到

return this.resourceLoader.getResource(location + "index.html");

所以我们只需要将首页命名为index.html,并放在静态页面下即可。

图标定制

新版不支持,因为我们在源码中没有发现这个东西,在2.1.7下是支持的。

做法介绍

将图标命名为favicon.ico放在静态资源下,然后在配置文件中,关闭默认图标。

spring:
  mvc:
    favicon:
      enabled: false
在新版的springboot,yaml配置中会爆红。

图标只能放在public,static,resources这些目录下

3. Thmeleaf的基本使用方法

先导入pom依赖

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

然后看源码Thmeleafproperties.java

public class ThymeleafProperties {

	private static final Charset DEFAULT_ENCODING = StandardCharsets.UTF_8;

	public static final String DEFAULT_PREFIX = "classpath:/templates/";

	public static final String DEFAULT_SUFFIX = ".html";

这说明我们要将Thmeleaf模板的文件放在templates目录下,定义一个html文件即可。

基本用法

这里建一个Controller.java文件

@Controller
public class textcontroller {
    @RequestMapping("/test")
    public String t1(Model model){
        model.addAttribute("meg","<h1>hello spring boot</h1>");
        ArrayList<Object> list = new ArrayList<>();
        list.add("chenyi");
        list.add("shi");
        model.addAttribute("user",list);
        return "1";
    }
}

有springmvc基础的应该可以看懂这些简单代码

xmlns:th="http://www.w3.org/1999/xhtml">
<body>
<div th:text="${meg}"></div>
<div th:utext="${meg}"></div>
<hr>
<div th:each="users:${user}" th:text="${users}"></div>
</body>

在html中写下如下代码,其中:

xmlns:th="http://www.w3.org/1999/xhtml">

这是一个关于Thmeleaf的命名空间
th:text是取文本的内容的,跟jsp一样用${}取
th:utext也是取文本内容的,它可以识别html代码
th:each是遍历用的,语法和foreach差不多,只是foreach前面会多一个声明类型

展示效果如下

关于springboot,web开发的准备知识

上一篇:Spring Boot之配置文件位置


下一篇:BUAA_OO第四单元UML图解析