关于springboot,web开发的准备
- 关于静态资源
- 首页和图标定制
- 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/"
这些目录下
也可以直接在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前面会多一个声明类型