什么是freemarker
百度百科上的定义如下:
这里要注意:它是一款模板引擎,而不是一个web框架,它基于模板来生成文本输出。FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 文等。
初步可以理解为,我在后台为一些变量用键值对的形式赋值,前台直接使用一些固定符号,里面填入键的名称,就可以对应获取到值了。
举个简单的例子:
java后台代码中我们写上:("name","张三");
前台html页面我们选择一处写上:名称是:$(name) 那么最终输出的结果就是名称是:张三
freemarker的优点
1. 可以彻底的分离表现层和业务逻辑。
传统的jsp页面中会出现很多的java后台代码,这样就使得前台看上去很乱,不好维护。
2. 提高开发效率
JSP在第一次执行的时候需要转换成Servlet类,开发阶段进行功能调适时,需要频繁的修改JSP,每次修改都要编译和转换。相对于JSP来说,freemarker模板技术不存在编译和转换的问题,所以就不会存在上述问题。
3. 开发过程中人员分工更明确
负责前台的专门写前台代码,负责后台的只需要写好前台需要的值就可以了。
springboot整合freemarker
1. 首先pom.xml中添加相关的依赖
<!-- freemarker 依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>
2. application中添加freemarker的一些配置信息
注意:
spring.freemarker.template-loader-path 意思为设定ftl文件路径
spring.freemarker.suffix= .ftl 意思为指明freemarker文件的后缀名
spring.freemarker.template-loader-path=classpath:/templates/ spring.freemarker.cache=false spring.freemarker.charset=UTF-8 spring.freemarker.check-template-location=true spring.freemarker.content-type=text/html spring.freemarker.expose-request-attributes=false spring.freemarker.expose-session-attributes=false spring.freemarker.request-context-attribute=request spring.freemarker.suffix= .ftl
3. 在templates文件夹下创建一个.ftl结尾的文件。这里我是起名为index.ftl。其中${name}就是freemarker的前台获取方式
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>FreeMarker测试</title> </head> <body> <h3>${name}</h3> </body> </html>
4. 在后台里写上跳转页面及赋值的方法
//浏览器中输入http://localhost:8080/fileoperate/index即可访问 @Controller @RequestMapping("/fileoperate") public class fileOperateController { @RequestMapping("/index") public String toIndex(Model model){ model.addAttribute("name","张三"); return "index"; } }
5. 测试结果
参考:
1. https://blog.csdn.net/qq_30644579/article/details/78698249
2. https://www.jianshu.com/p/9ac0345deb8c
持续更新!!!