freemakrer可以用来实现网页静态化
/** * freemarker的使用方法 * * @throws IOException * @throws TemplateException */ @Test public void test1() throws IOException, TemplateException { //1.创建模板对象 //2.创建Configuration对象 Configuration configuration = new Configuration(Configuration.getVersion()); //3.设置模板文件保存的目录 configuration.setDirectoryForTemplateLoading(new File("D:\\Program Files\\idea-workspace-e3mall\\e3-item-web\\src\\main\\webapp\\WEB-INF\\ftl")); //4.模板文件的编码格式,一般为utf-8 configuration.setDefaultEncoding("utf-8"); //5.加载一个模板文件,创建一个模板对象 Template template = configuration.getTemplate("hello.ftl"); //6.创建一个数据集,可以是pojo,或者是map,推荐使用map Map map = new HashMap<>(); //${key} map.put("hello", "你好!"); //pojo Student student = new Student(1, "张三", 18, "北京"); map.put("student", student); //list List list = new ArrayList(); list.add(new Student(1, "张三1", 18, "北京")); list.add(new Student(2, "张三2", 18, "北京")); list.add(new Student(3, "张三3", 18, "北京")); list.add(new Student(4, "张三4", 18, "北京")); list.add(new Student(5, "张三5", 18, "北京")); list.add(new Student(6, "张三6", 18, "北京")); list.add(new Student(7, "张三7", 18, "北京")); list.add(new Student(8, "张三8", 18, "北京")); list.add(new Student(9, "张三9", 18, "北京")); map.put("studentList", list); //date map.put("date", new Date()); //null map.put("val", "123"); //7.创建一个writer对象,指定输出文件的路径及文件名 Writer out = new FileWriter("D:\\Program Files\\idea-workspace-e3mall\\e3-item-web\\src\\main\\webapp\\temp\\hello.html"); //8.生成静态页面 template.process(map, out); //9.关闭流 out.close(); }
hello.ftl
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>student</title> </head> <body> ${hello}<br><br> <h2>学生信息:</h2><br> 学号:${student.id}<br> 姓名:${student.name}<br> 年龄:${student.age}<br> 地址:${student.address}<br> <br><br> <table border="1"> <tr> <th>序号</th> <th>学号</th> <th>姓名</th> <th>年龄</th> <th>地址</th> </tr> <#list studentList as student> <#if student_index % 2 == 0> <tr bgcolor="#faebd7"> <#else> <tr bgcolor="blue"> </#if> <td>${student_index}</td><#--索引--> <td>${student.id}</td> <td>${student.name}</td> <td>${student.age}</td> <td>${student.address}</td> </tr> </#list> </table> <br> <br> 当前日期:${date?date}<br> 当前日期:${date?time}<br> 当前日期:${date?datetime}<br> 当前日期:${date?string("yyyy/MM/dd HH:mm:ss")}<#--自定义时间格式--><br> null值的处理:${val!"val的值为null"}<br> 判断val的值是否为null:<br> <#if val??> val中有内容 <#else> val的值为null </#if> <br> 引用模板测试:<br> <#include "student.ftl"> </body> </html>
hello.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>student</title> </head> <body> 你好!<br><br> <h2>学生信息:</h2><br> 学号:1<br> 姓名:张三<br> 年龄:18<br> 地址:北京<br> <br><br> <table border="1"> <tr> <th>序号</th> <th>学号</th> <th>姓名</th> <th>年龄</th> <th>地址</th> </tr> <tr bgcolor="#faebd7"> <td>0</td> <td>1</td> <td>张三1</td> <td>18</td> <td>北京</td> </tr> <tr bgcolor="blue"> <td>1</td> <td>2</td> <td>张三2</td> <td>18</td> <td>北京</td> </tr> <tr bgcolor="#faebd7"> <td>2</td> <td>3</td> <td>张三3</td> <td>18</td> <td>北京</td> </tr> <tr bgcolor="blue"> <td>3</td> <td>4</td> <td>张三4</td> <td>18</td> <td>北京</td> </tr> <tr bgcolor="#faebd7"> <td>4</td> <td>5</td> <td>张三5</td> <td>18</td> <td>北京</td> </tr> <tr bgcolor="blue"> <td>5</td> <td>6</td> <td>张三6</td> <td>18</td> <td>北京</td> </tr> <tr bgcolor="#faebd7"> <td>6</td> <td>7</td> <td>张三7</td> <td>18</td> <td>北京</td> </tr> <tr bgcolor="blue"> <td>7</td> <td>8</td> <td>张三8</td> <td>18</td> <td>北京</td> </tr> <tr bgcolor="#faebd7"> <td>8</td> <td>9</td> <td>张三9</td> <td>18</td> <td>北京</td> </tr> </table> <br> <br> 当前日期:2018-5-14<br> 当前日期:1:12:49<br> 当前日期:2018-5-14 1:12:49<br> 当前日期:2018/05/14 01:12:49<br> null值的处理:123<br> 判断val的值是否为null:<br> val中有内容 <br> 引用模板测试:<br> <h2>学生信息:</h2><br> 学号:1<br> 姓名:张三<br> 年龄:18<br> 地址:北京<br> <br><br></body> </html>
student.ftl
<h2>学生信息:</h2><br> 学号:${student.id}<br> 姓名:${student.name}<br> 年龄:${student.age}<br> 地址:${student.address}<br> <br><br>
html页面显示效果:
freemarker和springmvc整合:
<!--springmvc整合freemarker--> <bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="templateLoaderPath" value="/WEB-INF/ftl/"/> <property name="defaultEncoding" value="utf-8"/> </bean>
@Controller public class HtmlGenController { @Resource private FreeMarkerConfigurer freemarkerConfig; @RequestMapping("/genhtml") @ResponseBody public String htmlGenTest(HttpServletRequest request) throws IOException, TemplateException { Configuration configuration = freemarkerConfig.getConfiguration(); //加载模板 Template template = configuration.getTemplate("test.ftl"); //创建一个数据集 Map data = new HashMap<>(); data.put("test",123456); //指定文件输出路径及文件名 String realPath = request.getSession().getServletContext().getRealPath("/temp"); System.out.println(realPath); Writer out = new FileWriter(realPath + "/test.html"); template.process(data,out); //输出文件,关闭流 out.flush(); out.close(); return "SUCCESS"; } }