使用FreeMarker生成静态html文件
来源:互联网 发布:fifa online315数据库 编辑:程序博客网 时间:2024/06/05 08:48
为了提高程序的效率,一些关联关系复杂或修改频率小的页面最好使用静态页面展示。这里使用freemarker来生成静态html文件。
freemarker环境
下载jar包freemarker-2.3.16.jar 地址:http://download.csdn.net/download/li4562258fj155/9933021
freemarker模板
<!DOCTYPE html><html> <head> <title>学生</title> <meta name="keywords" content="keyword1,keyword2,keyword3"> <meta name="description" content="this is my page"> <meta name="content-type" content="text/html; charset=UTF-8"> <link href="/demo/css/style2014.css" rel="stylesheet" type="text/css"> <link href="/demo/css/base.css" rel="stylesheet" type="text/css"> <style type="text/css"> /* 常用 */ .td_1{width: 11%;} /* 空白单元格 */ .td_blank{width: 10%;} /* 图片样式 */ .equ_img{width: 225px;height: 150px;} </style> </head> <body> <div class="div_body"> <form id="form_main" method="post"> <table class="table_main"> <tbody> <tr> <td class="td_blank"></td> <td class="td_common td_1">学生名称</td> <td class="td_common td_1"> <input value="${student.name}" class="input_common" readonly="readonly" style="color: gray; background: white none repeat scroll 0% 0%;" type="text"> </td> <td class="td_common td_1">学生编号</td> <td colspan="2" class="td_common"> <input value="${student.number}" class="input_common" readonly="readonly" style="color: gray; background: white none repeat scroll 0% 0%;" type="text"> </td> <td rowspan="5" colspan="3" class="td_common"> <img src="/student/${student.imgAddr}" class="stu_img"> </td> <td class="td_blank"></td> </tr> <tr> <td class="td_blank"></td> <td class="td_common">是否毕业</td> <td class="td_common"> <select class="sel_common" disabled="disabled" style="color: gray; background: white none repeat scroll 0% 0%;"> <option value="">--请选择--</option> <#if (student.isGraduate == 1)> <option value="1" selected="selected">是</option> <option value="0">否</option> </#if> <#if (student.isGraduate == 0)> <option value="1">是</option> <option value="0" selected="selected">否</option> </#if> </select> </td> <td class="td_common">毕业时间</td> <td colspan="2" class="td_common"> <input id="txt~graduateTime" value="${student.graduateTime?default('')}" readonly="readonly" class="input_common" style="color: gray; background: white none repeat scroll 0% 0%;" type="text"> </td> <td class="td_blank"></td> </tr> <tr> <td class="td_blank"></td> <td colspan="5" class="td_common"></td> <td class="td_blank"></td> </tr> <tr> <td class="td_blank"></td> <td colspan="5" class="td_common"></td> <td class="td_blank"></td> </tr> <tr> <td class="td_blank"></td> <td colspan="5" class="td_common"></td> <td class="td_blank"></td> </tr> <!-- 获奖记录 --> <tr> <td class="td_blank"></td> <td colspan="8" class="td_common">获奖记录</td> <td class="td_blank"></td> </tr> <tr> <td class="td_blank"></td> <td colspan="2" class="td_common">序号</td> <td colspan="2" class="td_common">获奖时间</td> <td colspan="4" class="td_common">获奖详情</td> <td class="td_blank"></td> </tr> <#list awardList as award> <tr> <td class="td_blank"></td> <td colspan="2" class="td_common"> <span>${award_index+1}</span> </td> <td colspan="2" class="td_common"> <input value="${award.time }" readonly="readonly" class="input_common" style="color: gray; background: white none repeat scroll 0% 0%;"/> </td> <td colspan="2" class="td_common"> <input value="${award.detail }" readonly="readonly" class="input_common" style="color: gray; background: white none repeat scroll 0% 0%;"/> </td> <td class="td_blank"></td> </tr> </#list> </tbody> </table> </form> </div> </body></html>
freemarker工具类
package com.demo.util;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.Writer;import java.util.HashMap;import java.util.Map;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import freemarker.template.Configuration;import freemarker.template.DefaultObjectWrapper;import freemarker.template.Template;import freemarker.template.TemplateException;/** * 使用Freemarker生成html文件 * @author lg * */public class GenerateHtml {/** * 根据模板生成html文件 * @param request * @param templateName模板名称 * @param htmlNamehtml文件名称 */public static void generate(HttpServletRequest request, String templateName, String htmlName){FileOutputStream fos = null;Writer writer = null;try {HttpSession session = request.getSession();String root = session.getServletContext().getRealPath("file/staticPage");// 根目录// 设置相关配置Configuration configuration = new Configuration();configuration.setDirectoryForTemplateLoading(new File(root + File.separator + "template"));//模板存放地址configuration.setObjectWrapper(new DefaultObjectWrapper());configuration.setDefaultEncoding("UTF-8");// 默认编码// 根据模板名称获取模板Template template = configuration.getTemplate(templateName);// 设置模板参数Map<String, Object> paramMap = new HashMap<String, Object>();// 模板参数if ("student.html".equals(templateName)) {// 学生paramMap.put("student", request.getAttribute("student"));// 学生paramMap.put("awardList", request.getAttribute("awardList"));// 获奖记录列表}// 生成输出流File html = new File(root + File.separator + "html/student", htmlName);// html文件if (html.exists()) {// 文件已存在时删除原有文件html.delete();}fos = new FileOutputStream(html);writer = new OutputStreamWriter(fos,"UTF-8");// 生成模板template.process(paramMap, writer);System.out.println("成功生成html文件--" + htmlName);} catch (IOException e) {e.printStackTrace();} catch (TemplateException e) {e.printStackTrace();} finally {try {if (fos != null) {fos.close();}if (writer != null) {writer.close();}} catch (Exception e) {e.printStackTrace();}}}}
测试
@RequestMapping("/queryStudent") public String queryStudent(HttpServletRequest request, HttpServletResponse response){String id = request.getParameter("id");// 主键// 查询是否存在静态展示页面String rootPath = request.getSession().getServletContext().getRealPath("file/staticPage/html/student");File htmlPage = new File(rootPath, "student_" + id + ".html");// 无展示页面if (!htmlPage.exists()) {// 查询数据request.setAttribute("student", student);// 学生request.setAttribute("awardList", awardList);// 获奖记录synchronized (studentController.class) {// 重新验证是否已拥有展示页面 防止重复生成htmlPage = new File(rootPath, "student_" + id + ".html");if (!htmlPage.exists()) {// 生成静态展示页面String templateName = "student.html";String htmlName = "student_" + id + ".html";GenerateHtml.generate(request, templateName, htmlName);}}}// 访问静态展示页面return "redirect:/file/staticPage/html/student/student_" + id + ".html";}
freemarker常用标签
${}
功能和EL表达式一致,通过{}内的名称获取值。
default()
语法:
${[name]?default('')}
freemarker不支持null,所以对可能出现空值的属性设置默认值!
#if
语法:
<#if ([name] == 0)> [name]等于零!</#if>
#list
语法:
<#list [nameList] as [name]> 这是第${[name]_index+1}条数据!数据值为${[name]} <br/></#list>
阅读全文
0 0
- 使用FreeMarker生成Html静态文件(实例)
- 使用FreeMarker生成Html静态文件
- 使用FreeMarker生成Html静态文件(实例)
- 使用FreeMarker生成Html静态文件(实例)
- 使用FreeMarker生成Html静态文件
- 使用FreeMarker生成静态html文件
- freemarker生成静态html文件
- 使用FreeMarker生成静态HTML
- 使用FreeMarker生成静态HTML
- 使用FreeMarker生成静态HTML
- 使用freemarker 批量生成静态html
- freemarker 生成静态文件
- Freemarker生成静态html示例
- Freemarker生成HTML静态页面
- Spring Boot使用freemarker并且生成静态html页面
- 利用freemarker生成静态文件
- 使用FreeMarker/Jsp(WebWork2)生成静态/动态RSS文件
- 使用FreeMarker/Jsp(WebWork2)生成静态/动态RSS文件
- Spring MVC 第一个小例子
- SVM相关问题
- linux上修改远程服务密码
- nRF52832 — 1.44寸 TFT屏
- 手机异常问题分析和定位
- 使用FreeMarker生成静态html文件
- 关于@RestController 和 @Controller 的区别
- kvo与kvc
- 图像检索中的相似度度量:EMD距离(Earth Mover's Distance)
- JS无缝滚动显示和JSP中marquee标签滚动显示
- c++中pair和map的区别
- FPGA跨时钟域的处理方法
- JZOJ5274. 数组
- javaScript内置对象RegExp