freemarker使用(freemarker如何使用)
本文目录
freemarker如何使用
1.在lib中加入freemarker的包2.在文件templates创建一个文件 test.ftl内容为: ${name},你好,${msg}3.创建类4个步骤,具体看类中的使用package abin;import java.io.File;import java.io.OutputStreamWriter;import java.util.HashMap;import java.util.Map;import freemarker.template.Configuration;import freemarker.template.Template;/** * 模板文件(hello,${name})+数据模型(name=“******“)----------经过FreeMarker整合----输出(hello,******) * 经过4个步骤,见下面 * @author chenhaibin * */public class HelloFreeMarker{ private Configuration conf; //1 创建Configuration实例,该实例负责管理FreeMarker的模板加载路径 public void first() throws Exception { conf=new Configuration(); //放置test.fsl文件的路径 conf.setDirectoryForTemplateLoading(new File(“templates“)); } private Template t; //2 使用Configuration实例生成Template实例,同时加载指定的模板文件 public void second() throws Exception { t=conf.getTemplate(“test.ftl“); } private Map datamap; //3 填充数据模型 public void third() { datamap=new HashMap(); datamap.put(“name“, “chenhaibin“); datamap.put(“msg“, “欢迎使用FreeMarker!“); } //4 合并处理 public void four() throws Exception { t.process(datamap, new OutputStreamWriter(System.out)); } public static void main(String args) throws Exception { HelloFreeMarker hfm=new HelloFreeMarker(); hfm.first(); hfm.second(); hfm.third(); hfm.four(); }}4.结果是: chenhaibin,你好,欢迎使用FreeMarker!
如何快速学习freemarker以及使用经验
首先,通过xml模板可以将基本上所有的格式都事先锁定,包括页码和分页,只要你事先预设好就能够通过freemarker实现生成,接下来就是我这个问题了,目录怎么解决,下面是解决思路:1:目录的内容可以根据之前其他的内容一样解决,通过XML模板预先设置好,2:目录的页码已经研究过是不能直接通过xml模板实现动态对应了(至少我没搞定0.0)3:由于不能够一步到位,我采取了在模板中预留了一页空白页,只留了抬头的目录两个字,然后通过查询目录二字进行目录的生成,这个功能也是我刚刚折腾出来的0.0目前还没测试能不能用模板生成目录后再更新目录0.0,不过想想可以直接生成目录应该就不用这么麻烦了,至于word生成后的修改0.0我觉得还是以后再说吧..整体来说应该还算完美解决了,代码我就不在这贴出来了~虽然中间折腾了半天走了半天弯路~讲道理还是用的jacob来实现的。。
如何使用freemarker将jsp网页静态化
整个网站首页的基本结构是通过jsp的include标签将所有通过freemarker生成的静态页面组织起来。后台控制各个部分的静态页生成。这样做将首页进行了拆分,便于了静态页面的维护,当我们需要生成“友情链接”部分的时候就只生成友情链接部分,而不需要将整个页面都从新生成一次。以下是我生成静态页最核心的方法,使用freemarker。 /*** 生成静态页面主方法* @param context ServletContext* @param data 一个Map的数据结果集* @param templatePath ftl模版路径* @param targetHtmlPath 生成静态页面的路径*/ public static void crateHTML(ServletContext context,Map《String,Object》 data,String templatePath,String targetHtmlPath){Configuration freemarkerCfg = new Configuration();//加载模版freemarkerCfg.setServletContextForTemplateLoading(context, “/“);freemarkerCfg.setEncoding(Locale.getDefault(), “UTF-8“);try {//指定模版路径Template template = freemarkerCfg.getTemplate(templatePath,“UTF-8“);template.setEncoding(“UTF-8“);//静态页面路径String htmlPath = context.getRealPath(“/html“)+“/“+targetHtmlPath;File htmlFile = new File(htmlPath);Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(htmlFile), “UTF-8“));//处理模版template.process(data, out);out.flush();out.close();} catch (Exception e) {e.printStackTrace();}} 其实很简单,只要Google一下就有很多这方面的代码。我也是Google的代码然后自己再根据实际情况修改。简单说明一下参数: ServletContext :这个不用说了吧。做java web的应该都知道,只不过struts2中这样获取ServletActionContext.getServletContext()Map《String,Object》 data : 模版的数据来源。freemarker通过一个Map给ftl模版送数据。现在已友情链接为列子详细介绍静态页面如何生成。其他模块以此类推。 String templatePath : ftl所在的路径。我这里相对于网站的一个相对路径然后通过ServerContext获取绝对路径。 String targetHtmlPath : 最后生成静态页的路径:我这里相对于网站的一个相对路径然后通过ServerContext获取绝对路径。 友情链接根据这段代码《jsp:include page=“/html/index_link.html“ flush=“true“》《/jsp:include》我们需要freemarker生成一个index_link.html文件。友情链接数据来源通过数据库查询获取。然后再写一个方法专门生成友情链接静态页面: /*** 生成友情链接的静态页index_link.html* @param context* @param data*/public static void createIndexFriendLink(ServletContext context,Map《String,Object》 data){crateHTML(context,data,“index_link.ftl“,“index_link.html“);} 此方法调用上面的createHTML方法。然后根据以上方法我们就可以再Struts2的action里面从数据库查询数据放入map调用createIndexFriendLink()方法生成静态页了。这是action中的一个方法:/*** 生成友情链接静态页index_link.html* @return*/public String createLink(){//权限验证if(! this.isAccess())return “error“;try{//得到友情链接List links = friendLinkDAO.findAll();//准备数据HashMap《String,Object》 data = new HashMap《String,Object》();data.put(“links“, links);//调用静态页面方法HTML.createIndexFriendLink(ServletActionContext.getServletContext(), data);addActionMessage(“静态页面生成成功!“);return “message“;}catch(Exception e){e.printStackTrace();return “failure“;}} List links = friendLinkDAO.findAll();通过spring注入action的hiberate DAO获取数据给list然后通过以下代码 HashMap《String,Object》 data = new HashMap《String,Object》();data.put(“links“, links); 准备数据调用createIndexFriendLink()方法。以下是:ftl模版源码: 《#if links?size != 0》 《 div class=“link“》《strong》友情链接:《/strong》《#list links as link》《a href=“${link.linkUrl}“ target=“_blank“ title=“${link.linkName}“》${link.linkName}《/a》《/#list》 《 /div》 《 #else》 《 div class=“link“》《/div》 《 /#if》
更多文章:

studying的翻译(study 和studying都有名词词性 有什么区别)
2025年4月3日 03:40

穿梭时空的侠客txt下载(如果你能穿越到古代,你想成为什么样的人)
2025年3月20日 07:10

int编程中是什么意思?Intelligent和smart的区别,智能硬件应该怎能翻译
2025年4月1日 08:10

false是1还是0(php 里面,0、1和false 、true有什么区别)
2025年3月8日 02:40

delphi 2010(Delphi 2010 如何设置Exe输出路径)
2025年4月2日 23:50