时间:2021-05-20
freemarker和thymeleaf是模板引擎。在早前我们使用Struts或者SpringMVC等框架的时候,使用的都是jsp,jsp的本质其实就是一个Servlet,其中的数据需要在后端进行渲染,然后再在客户端显示,效率比较低下。而模板引擎恰恰相反,其中的数据渲染是在客户端,效率方面比较理想一点。前后端不分离的话用模板引擎比较好,前后端分离的话其实用处并不大很大。Spring官方比较推荐的是thymeleaf,其文件后缀是html。本篇文章我们主要来看看SpringBoot整合freemarker,SpringBoot整合thymeleaf我们将在后面的文章中讲解。
先来看一下项目文件目录:
首先,pom.xml中导入freemarker的依赖:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId></dependency>在application.properties(或yml)配置文件中加入freemarker相关配置:
# freemarker静态资源配置# 设定ftl文件路径spring.freemarker.tempalte-loader-path=classpath:/templates# 关闭缓存,及时刷新,上线生产环境需要修改为truespring.freemarker.cache=falsespring.freemarker.charset=UTF-8spring.freemarker.check-template-location=truespring.freemarker.content-type=text/htmlspring.freemarker.expose-request-attributes=truespring.freemarker.expose-session-attributes=truespring.freemarker.request-context-attribute=requestspring.freemarker.suffix=.ftl这里指定了freemarker文件的路径是classpath/templates,在resources文件夹下的templates新建freemarker文件夹,并且在其中新建index.ftl(上面配置文件中已经指定了freemarker模板的文件后缀为ftl):
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8"/> <title></title></head><body>FreeMarker模板引擎<h1>${resource.name}</h1><h1>${resource.website}</h1><h1>${resource.language}</h1></body></html>我们在resources下新建resource.properties:
com.haozz.opensource.name=wangshucom.haozz.opensource.website=.haozz.freemarkerdemo.utils.Resource;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.ModelMap;import org.springframework.web.bind.annotation.RequestMapping;@Controller@RequestMapping(value = "/ftl")public class FreeMarkerCtrl { @Autowired private Resource resource; @RequestMapping(value = "index") public String index(ModelMap map){ map.addAttribute("resource",resource); return "freemarker/index"; }}这里的ModelMap就相当于SpringMVC中的ModelAndView,其中的很多方法也很类似,我们这里返回的字符串就是freemarker模板的路径,不用写后缀,因为配置文件中已经指定了后缀为.ftl
浏览器发起请求,得到结果:
这样,SpringBoot整合freemarker就好了。
我们再来试一下表格的形式。
FreeMarkerCtrl中新增方法:
@RequestMapping(value ="center") public String center(ModelMap map){ map.put("users",parseUsers()); map.put("title","用户列表"); return "freemarker/center/center"; } private List<Map> parseUsers(){ List<Map> list= new ArrayList<>(); for(int i=0;i<10;i++){ Map map= new HashMap(); map.put("name","kevin_"+i); map.put("age",10+i); map.put("phone","1860291105"+i); list.add(map); } return list; }在resources/templates/freemarker下新建center文件夹,新建center.ftl:
<html lang="zh-CN"><head> <meta charset="UTF-8"/> <title>${title}</title> <style> table { width: 50%; font-size: .938em; border-collapse: collapse; } th { text-align: left; padding: .5em .5em; font-weight: bold; background: #66677c;color: #fff; } td { padding: .5em .5em; border-bottom: solid 1px #ccc; } table,table tr th, table tr td { border:1px solid #0094ff; } </style></head><body><table> <tr> <th>Name</th> <th>Age</th> <th>Phone</th> </tr> <#list users as user> <tr> <td>${user.name}</td> <td>${user.age}</td> <td>${user.phone}</td> </tr> </#list></table></body></html>浏览器请求:
可以看到,在center.ftl中,我们使用了<#list users as user>的写法,这个相当于jstl表达式中的c:forEach。而users集合我们在FreeMarkerCtrl已经初始化了。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一、SpringBoot整合freemarker: 1.引入freemarker模板依赖:org.springframework.bootspring-boo
Freemarker入门示例FreeMarker整合Struts2示例SiteMesh入门示例那么如何将Freemarker与SiteMesh结合起来使用,这在
简介接下来会讲解怎么用SpringBoot整合OpenCV初始化SpringBoot项目这里正常初始一个SpringBoot项目依赖文件在安装目录下找到以下两个
SpringBoot整合Gson整合Fastjson一、SpringBoot整合Gson1、pom依赖#在SpringBoot中给我们自带了json解析器,我们
1简介在之前的文章《Springboot集成SpringSecurity实现JWT认证》讲解了如何在传统的Web项目中整合SpringSecurity和JWT,