Spring Boot 整合模板引擎(jsp、Freemarker 、Thymeleaf )
阿新 • • 發佈:2018-12-20
整合JSP模板
新增依賴
建立 maven 工程,在 pom.xml 檔案中新增如下依賴:
<dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> </dependency>
建立目錄和配置檔案
1. JSP頁面放在:/src/main/webapp/WEB-INF/jsp/目錄下,如:
/src/main/webapp/WEB-INF/jsp/index.jsp
2. CSS或JavaScript之類的靜態檔案:/src/main/resources/static/目錄下,如:
/src/main/resources/static/css/main.css
3. 對於屬性檔案放在:/src/main/resources/目錄下,如:
/src/main/resources/application.properties
配置application.properties
只需要新增這2個就可以了,如下:
#頁面預設字首目錄 spring.mvc.view.prefix=/WEB-INF/jsp/ #頁面預設字尾目錄 spring.mvc.view.suffix=.jsp |
或在application.yml中:spring節點下面:
spring: mvc: view: prefix: /WEB-INF/jsp/ suffix: .jsp |
建立JSP頁面資料夾
在src/main/webapp中的WEB-INF/下建立jsp資料夾,用於存放jsp頁面檔案。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<br>
${map}
</body>
</html>
編寫Controller
package club.lygangdai.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.Map;
/**
* @author Uncle Liu
* @ClassName: TestController
* @Description: TODO(類說明 :)
* @date 2018/11/7 11:31
*/
@Controller
@RequestMapping("/jsp")
public class TestController {
@RequestMapping("/index")
public String hello(Map<String,Object> map) {
map.put("map", "Hell");
return "index";
}
}
結果如下:
整合Freemarker 模板
新增 Freemarker 依賴
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
新增 Freemarker 模板配置
在 application.properties 中新增如下內容:
spring.freemarker.allow-request-override=false
spring.freemarker.cache=true
spring.freemarker.check-template-location=true
spring.freemarker.charset=UTF-8
spring.freemarker.content-type=text/html
spring.freemarker.expose-request-attributes=false
spring.freemarker.expose-session-attributes=false
spring.freemarker.expose-spring-macro-helpers=false
spring.freemarker.prefix=
spring.freemarker.suffix=.ftl
上述配置都是預設值。
編寫Controller
package club.lygangdai.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.Map;
/**
* @author Uncle Liu
* @ClassName: FreemarkerController
* @Description: TODO(類說明 :)
* @date 2018/11/7 11:32
*/
@Controller
@RequestMapping("/freemarker")
public class FreemarkerController{
@RequestMapping("/hello")
public String hello(Map<String,Object> map) {
map.put("map", "Hell Freemarker");
return "freemarker";
}
}
在 templates 目錄中建立名為 freemarker .ftl 檔案,內容如下:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link href="/css/index.css" rel="stylesheet"/>
</head>
<body>
<div class="container">
<h2>${map}</h2>
</div>
</body>
</html>
結果如下:
整合Thymeleaf 模板
新增 Thymeleaf依賴
<!--thymeleaf-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
新增 Thymeleaf模板配置
在 application.properties 中新增如下內容:
#thymeleaf模板
spring.thymeleaf.cache=true
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
spring.thymeleaf.servlet.content-type=text/html
上述配置都是預設值。
編寫Controller
package club.lygangdai.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.Map;
@Controller
@RequestMapping("thymeleaf")
public class ThymeleafController {
@RequestMapping("thymeleaf")
public String hello(Map<String,Object> map) {
map.put("map", "Hello Thymeleaf");
return "thymeleaf";
}
}
在 templates 目錄中建立名為 thymeleaf.html 檔案,內容如下:
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>Document</title>
<link href="/css/index.css" rel="stylesheet"/>
</head>
<body>
<div class="container">
<h2>${map}</h2>
</div>
</body>
</html>
結果如下: