SpringBoot 2.x (8):模板引擎
2019-05-08 07:36:17来源:博客园 阅读 ()
SpringBoot中有很多的starter:本质是多个JAR包集合
比如我们常用的:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
其实它包含的内容有:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> <version>2.1.4.RELEASE</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-json</artifactId> <version>2.1.4.RELEASE</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <version>2.1.4.RELEASE</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.hibernate.validator</groupId> <artifactId>hibernate-validator</artifactId> <version>6.0.16.Final</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.1.6.RELEASE</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.1.6.RELEASE</version> <scope>compile</scope> </dependency> </dependencies>
而每个依赖之下又包含有很多的JAR包,这里就不继续列举了
所以如果我们要用到的模板引擎不必去考虑需要什么JAR包
直接导入相对应的starter即可
模板引擎:
通常我们需要的是动态页面,动态页面就需要进行渲染
早期的项目使用JSP作为模板引擎,然后JSP是在后端进行,效率较低
JSP的优点:支持JSTL、El等方式,甚至可以直接写Java代码
JSP的缺点:效率问题,Undertow容器不支持,SpringBoot官网不推荐
Freemarker:严重依赖MVC模式,不依赖Servlet,不占用JVM
依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>
配置:
#Freemarker配置 #本地测试不推荐使用缓存 spring.freemarker.cache=false #编码 spring.freemarker.charset=UTF-8 #允许请求重写 spring.freemarker.allow-request-override=false #进行路径检查 spring.freemarker.check-template-location=true #格式为HTML spring.freemarker.content-type=text/html #暴漏request属性 spring.freemarker.expose-request-attributes=true #暴漏session属性 spring.freemarker.expose-session-attributes=true #文件后缀 spring.freemarker.suffix=.ftl #路径 spring.freemarker.template-loader-path=classpath:/templates/
在templates下新建一个目录fm,新建一个ftl文件:index.ftl:
<!DOCTYPE html> <html> <head> <title>Freemarker</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> Freemarker </body> </html>
注意:虽然页面在fm目录下,但配置的最后一项不可以写成classpath:/templates/fm
Controller:
package org.dreamtech.springboot.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/freemarker") public class FreemarkerController { @RequestMapping("/hello") private String index() { return "fm/index"; } }
访问localhost:8080/freemarker/hello即可看到index.ftl页面
如果需要动态渲染呢?
package org.dreamtech.springboot.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/freemarker") public class FreemarkerController { @RequestMapping("/hello") private String index(ModelMap modelMap) { modelMap.addAttribute("user", new User("admin", "password")); return "fm/index"; } }
package org.dreamtech.springboot.controller; public class User { private String username; private String password; public User(String username, String password) { this.username = username; this.password = password; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } }
<!DOCTYPE html> <html> <head> <title>Freemarker</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> Freemarker Username:${user.username} Password:${user.password} </body> </html>
Freemarker还有if else语法,循环语法等等,可以自行查找,这里就不介绍
Thymeleaf:SpringBoot官方推荐,适用于通常的项目,不适用于逻辑过于复杂的项目
直接以html作为文件结尾
依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
配置:
#Thymeleaf配置 #本地测试不推荐使用缓存 spring.thymeleaf.cache=false spring.thymeleaf.mode=HTML5 #前缀 spring.thymeleaf.prefix=classpath:/templates/ #后缀 spring.thymeleaf.suffix=.html #编码 spring.thymeleaf.encoding=UTF-8
页面:
<!DOCTYPE html> <html> <head> <title>Thymeleaf</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> Thymeleaf <p>Username:</p> <h3 th:text="${user.username}" /> <p>Password:</p> <h3 th:text="${user.password}" /> </body> </html>
Controller:
package org.dreamtech.springboot.controller; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; @Controller @RequestMapping("/thymeleaf") public class ThymeleafController { @RequestMapping("/index") private String index(ModelMap modelMap) { modelMap.addAttribute("user", new User("admin", "password")); return "tl/index"; } }
同样地,Thymeleaf还有很多其他语法,可以自行查找
实际开发中通常是前后端分离(Ajax)
如果不是前后端分离,那么推荐使用:Thymeleaf
原文链接:https://www.cnblogs.com/xuyiqing/p/10831241.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- springboot2配置JavaMelody与springMVC配置JavaMelody 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- 掌握SpringBoot-2.3的容器探针:实战篇 2020-06-11
- nacos~配置中心功能~springboot的支持 2020-06-10
- SpringBoot + Vue + ElementUI 实现后台管理系统模板 -- 后 2020-06-10
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash