如果开发者希望开发Spring Boot的Web应用程序,可以在Spring Boot项目的pom.xml文件中,添加如下依赖配置:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
Spring Boot将自动关联Web开发的相关依赖,如tomcat、spring-webmvc等,进而对Web开发的支持,并将相关技术的配置实现自动配置。
Thymeleaf模板引擎
在Spring Boot的Web应用中,建议开发者使用HTML完成动态页面。Spring Boot提供了许多模板引擎,主要包括FreeMarker、Groovy、Thymeleaf、Velocity和Mustache。因为Thymeleaf提供了完美的Spring MVC支持,所以在Spring Boot的Web应用中推荐使用Thymeleaf作为模板引擎。
Thymeleaf是一个Java类库,是一个xml/xhtml/html5的模板引擎,能够处理HTML、XML、JavaScript以及CSS,可以作为MVC Web应用的View层显示数据。
Spring Boot的Thymeleaf支持
在Spring Boot 1.X版本中,spring-boot-starter-thymeleaf依赖包含了spring-boot-starter-web模块。但是,在Spring 5中,WebFlux的出现对于Web应用的解决方案将不再唯一。所以,spring-boot-starter-thymeleaf依赖不再包含spring-boot-starter-web模块,需要开发人员自己选择spring-boot-starter-web模块依赖。
Tymeleaf模板默认将JS脚本、CSS样式、图片等静态文件默认放置在src/main/resources/static目录下;将视图页面放在src/main/resources/templates目录下。
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.dadid</groupId>
<artifactId>9-20-SpringBootWeb</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<properties>
<!-- 声明项目配置依赖编码格式为 utf-8 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<fastjson.version>1.2.24</fastjson.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
server.servlet.context-path=/ch5_1
#spring.thymeleaf.prefix=classpath:/templates
spring.messages.basename=i18n/admin/adminMessages,i18n/before/beforeMessages,i18n/common/commonMessages
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
测试Spring Boot的Thymeleaf支持<br>
<h1>引入主体内容模板片段:</h1>
<h1>引入版权所有模板片段:</h1>
</body>
</html>
package com.ch.ch5_1.controller;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
@Controller
//@RestController
public class TestThymeleafController {
@RequestMapping("/")
public String test() {
// 根据Tymeleaf模板,默认将返回src/main/resources/templates/index.html
return "index";
}
@RequestMapping("/testObject")
public String testObject(Model model) {
// 系统时间new Date()
model.addAttribute("nowTime", new Date());
// 系统日历对象
model.addAttribute("nowCalendar", Calendar.getInstance());
// 创建BigDecimal对象
BigDecimal money = new BigDecimal(2019.613);
model.addAttribute("myMoney", money);
// 字符串
String tsts = "Test strings";
model.addAttribute("str", tsts);
// boolean类型
boolean b = false;
model.addAttribute("bool", b);
// 数组(这里不能使用int定义数组)
Integer aint[] = { 1, 2, 3, 4, 5 };
model.addAttribute("mya", aint);
// List列表1
List<String> nameList1 = new ArrayList<String>();
nameList1.add("陈恒1");
nameList1.add("陈恒3");
nameList1.add("陈恒2");
model.addAttribute("myList1", nameList1);
// Set集合
Set<String> st = new HashSet<String>();
st.add("set1");
st.add("set2");
model.addAttribute("mySet", st);
// Map集合
Map<String, Object> map = new HashMap<String, Object>();
map.put("key1", "value1");
map.put("key2", "value2");
model.addAttribute("myMap", map);
// List列表2
List<String> nameList2 = new ArrayList<String>();
nameList2.add("陈恒6");
nameList2.add("陈恒5");
nameList2.add("陈恒4");
model.addAttribute("myList2", nameList2);
// 根据Tymeleaf模板,默认将返回src/main/resources/templates/showObject.html
return "showObject";
}
}
package com.ch.ch5_1.controller;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class APP {
public static void main(String[] args) {
SpringApplication.run(APP.class);
}
}