※JSP
※build.gradle
dependencies {
compile 'org.springframework.boot:spring-boot-starter'
testCompile 'org.springframework.boot:spring-boot-starter-test'
compile 'org.springframework.boot:spring-boot-starter-web'
compile 'javax.servlet:jstl'
compile 'org.apache.tomcat.embed:tomcat-embed-jasper'
}
※增加下面兩個
※java bean
public class Animal {
private Integer id;
private String name;
public Animal(Integer id, String name) {
super();
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public String getName() {
return name;
}
}
※
※controller
@Controller
@RequestMapping("/zoo")
public class AnimalAction {
@RequestMapping("/animalInfo")
public String displayAnimal(Model model) {
List<Animal> list = new ArrayList<>();
list.add(new Animal(1, "tiger"));
list.add(new Animal(2, "horse"));
list.add(new Animal(3, "lion"));
model.addAttribute("animalList", list);
return "zoo"; // "/WEB-INF/jsp/zoo.jsp"
}
}
※
※zoo.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<table border="1" align="center" width="30%">
<tr>
<th>id</th>
<th>name</th>
</tr>
<c:forEach items="${animalList}" var="a">
<tr>
<td align="center"><c:out value="${a.id}" /></td>
<td align="center">${a.name}</td>
</tr>
</c:forEach>
</table>
※注意 taglib 的uri 有 jsp 的才是 jsp 2.x的,才有支援 EL
※c:forEach 屬性不能空格,items 必需用 EL
※application.properties
server.port=9000 spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix=.jsp
※增加兩個 viewResolver,如果不加,那 controller 回傳可用註解的部分
※測試
@SpringBootApplication
public class Test {
public static void main(String[] args) {
SpringApplication.run(Test.class, args);
}
}
※
※Freemarker
和 整合 JSP 差不多,官網手冊※build.gradle
compile 'org.springframework.boot:spring-boot-starter-freemarker'
※
※zoo.ftl
<html>
<body>
<table border="1" align="center" width="50%">
<tr>
<th>id</th>
<th>name</th>
</tr>
<#list animalList as a>
<tr>
<td>${a.id}</td>
<td>${a.name}</td>
</tr>
</#list>
</table>
</body>
</html>
※
※application.properties
spring.freemarker.prefix= spring.freemarker.suffix=.ftl
※測試類和 controller 和 整合 JSP 一樣
※官網有說明,在倒數第二個圓點,ftl 檔必需放在 classpath:/templates/下,所以上面兩個都是預設值,還有很多 freemarker 的設定,看官網,下面有 FREEMARKER
※Thymeleaf
※thyme 和 time 發音相同,百里香的意思,thymeleaf 為百里香的葉子語法可參考官網
※build.gradle
buildscript {
ext {
springBootVersion = '2.0.3.RELEASE'
}
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
group = 'sbt'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
dependencies {
compile 'org.springframework.boot:spring-boot-starter'
testCompile 'org.springframework.boot:spring-boot-starter-test'
compile 'org.springframework.boot:spring-boot-starter-web'
// compile 'javax.servlet:jstl'
// compile 'org.apache.tomcat.embed:tomcat-embed-jasper'
// compile 'org.springframework.boot:spring-boot-starter-freemarker'
compile 'org.springframework.boot:spring-boot-starter-thymeleaf'
}
※
※java bean 和 controller
public class Animal {
private Integer id;
private String name;
// getter...
public Animal(Integer id, String name) {
super();
this.id = id;
this.name = name;
}
}
@Controller
@RequestMapping("/zoo")
public class AnimalAction {
@RequestMapping("/animalInfo")
public String displayAnimal(Model model) {
List<Animal> list = new ArrayList<>();
list.add(new Animal(1, "tiger"));
list.add(new Animal(2, "horse"));
list.add(new Animal(3, "lion"));
model.addAttribute("animalList", list);
model.addAttribute("name", "leopard");
return "zoo";
}
}
※
※zoo.html
<div th:text="可以寫死"></div>
<div th:text="${name}"></div>
<input th:value="${name}" />
<table border="1" align="center" width="50%">
<tr>
<th>id</th>
<th>name</th>
</tr>
<tr th:each="a : ${animalList}">
<td th:text="${a.id}" />
<td th:text="${a.name}" />
</tr>
</table>
※th 會有警告,不想看到可在 html 標籤加屬性,如 <html xmlns:th="http://www.thymeleaf.org">
※測試類
@SpringBootApplication
public class Test {
public static void main(String[] args) {
SpringApplication.run(Test.class, args);
}
}
※可參考上面的 PDF 連結,3~7章為基礎語法,公用方法在19章
※還有取得 request、session…等作用域的,要看這裡
沒有留言:
張貼留言