方法一:(这个方法借鉴freemarker的docs文档Programmer's Guide 的quick start部分,详细请看相关的文档。
java 代码
- public class HtmlTemplateGenerator {
-
- Configuration cfg = null;
-
- public HtmlTemplateGenerator(String templatePath) throws IOException {
- cfg = new Configuration();
- cfg.setDefaultEncoding("UTF-8");
- cfg.setDirectoryForTemplateLoading(new File(templatePath));
- cfg.setObjectWrapper(new DefaultObjectWrapper());
- }
-
-
-
-
-
-
-
-
-
-
- public void create(String ftlTemplate, Map contents, String savePath, String saveFilename) throws IOException, TemplateException {
- Template temp = cfg.getTemplate(ftlTemplate);
-
-
- String realPath = ServletActionContext.getServletContext().getRealPath(savePath);
- System.out.println( saveFilename + ":" + realPath);
- File file = new File(realPath);
- if(!file.exists())
- file.mkdirs();
-
- Writer out = new OutputStreamWriter(new FileOutputStream(realPath + "/" + saveFilename),"UTF-8");
- temp.process(contents, out);
- out.flush();
- }
-
- }
如果用spring,可以将它配置成bean,然后在其他地方使用。第五行的 templatePath 是模版文件的路径,比如/WEB-INF/template。
action中的使用:HtmlTemplateGenerator.create("html/magazine/search.ftl", null, "/magazine", "search.html"); 其中“html/magazine/search.ftl”是在“/WEB-INF/template”目录下。这里还需要注意的是。模版文件(search.ftl)中如果还要引用其他文件,它的路径也是不需要添加总路径“/WEB-INF/template”。
方法二:继承webwork的FreemarkerResult,改写getWriter方法:
不知有无好的法子。
java 代码
- protected Writer getWriter() throws IOException {
- String savePath = (String) ActionContext.getContext().getSession().get("SAVE_PATH");
- String saveFilename = (String) ActionContext.getContext().getSession().get("SAVE_FILENAME");
- String realPath = ServletActionContext.getServletContext().getRealPath(savePath);
- System.out.println( saveFilename + ":" + realPath);
- File file = new File(realPath);
- if(!file.exists())
- file.mkdirs();
-
- return templateOut = new OutputStreamWriter(new FileOutputStream(realPath + "/" + saveFilename),"UTF-8");
- }
这里的路径和文件名通过webwork的session传入,不知有无其他好方法。
如果生成文件的同时还需要看到生成的页面,则要改写“doExecute”:
java 代码
- template.process(model, getWriter());
- template.process(model, super.getWriter());
- templateOut.flush();
生成的文件格式不限于html,可以是其他文件格式,如js,text等。
比较这两种方法:
方法一:在需要生成分页文件时,比较合适。
方法二:可以象往常一样使用,一次需要生成多文件则不适合。
不知各位在做这些项目时,使用甚么好方法。
分享到:
相关推荐
《抛砖引路单片机》是一本针对初学者的单片机学习指南,旨在引领读者逐步走进单片机的世界。书中的内容分为四个主要部分,涵盖了从理论基础到实践操作的各个环节,对于想要深入了解单片机技术的人来说,无疑是一份...
一字螺丝刀在某些情况下可以用作撬棍,但应选择薄型的,以保证强度的前提下尽可能薄,以便使用。此外,镊子在对付某些细小部件时也有很好的效果,但并非必须。 在拆卸笔记本时,还应注意保护内部零件,比如在拆卸...
浙江三花智能控制股份有限公司自主开发的WMS系统操作手册旨在帮助用户快速掌握WMS系统的操作和使用方法。 软件概述 WMS系统是一款基于Web的仓储管理系统,旨在帮助仓库管理员和供应链管理者更好地管理仓库的日常...
使用简单的梯形图与SCL语言编写,通俗易懂,起到抛砖引玉的作用,比较适合有动手能力的入门初学者。 软件环境: 1、西门子编程软件:TIA Portal V15(博图V15) 2、FactoryIO 2.4.0 内容清单: 1、FactoryIO中文说明...
对于把XP装进U盘或移动硬盘一直是个让人感兴趣的话题,对于要经常使用几台电脑移动办公的朋友更是意义不言而喻。许多时候,异地办公时资料和软件的不同步,更有甚者,系统的操作界面、主题等与习惯上的不一致,也...
本文所提供的资料中,有详细的安装、使用方法(其中也有Web服务端的收发规则),可参考、试用、交流。 由于笔者水平有限,疏漏之处难免,望网友指正,以便大家共同提高! QQ:527800911、微信:13947680916 2019.6...
尽管在这个特定的示例中没有成功,但攻击者可以通过各种方法,如枚举、猜测或利用其他数据库对象的信息,来尝试获取数据库名。 SQL注入的危害极大,攻击者可以利用它窃取、修改或删除数据库中的数据,甚至完全控制...
代码如下,仅作交流使用,期望起到抛砖迎玉的效果,matlab其强大功能需要我们一起发觉。:D urlread获取的源文件貌似不支持中文字符,不知道怎么解决,求交流解决办法。 % 本程序用于获取网站中的表格 % written ...
【抛砖引玉】是一个汉语成语,源自古代建筑工艺中的一种说法,比喻用自己不成熟的意见或作品引出别人更好的意见或作品。这个成语通常用于谦虚地提出自己的见解或建议,希望他人能够提出更优秀的想法或解决方案。近义...
使用φ9毫米小铁闩固定,严禁用铁钉代替,每条桥枋最多允许两人站立,上下脚手架需使用木梯,禁止攀爬。 6. **材料堆放与荷载**:楼层面材料堆放,尤其是砖块,不得超过设计荷载,脚手架上的砖块堆放不超过三皮侧砖...
Moba等游戏中,需要进行框选物体,但是如果地面不平整,用常规的BOX就无法制作贴合地面的选择器,利用贴花来制作,则可以完全100%贴合地面。贴花还有很多用途,比如制作技能范围展示等等,这里只是抛砖引用。文章...
本文只是举例说明开发过程,抛砖而已。 2.样例只是框架,不能直接使用,所有代码没有经过测试 3.样例接收器GifSink和属性页卡片没有完成,懒了,呵呵 4.样例背景等很多属性没有实现 5.使用了GDI ,但GDI 的...
借鉴的另一个人的代码,我这里抛砖引。 这个项目是要连接数据库,获取并展示文物信息,那么就让单独一个database.py文件获取到后,一直保留着就可以了。咱也不知道数据量有多大,炸了再说。 那没数据库也不是跑不了...
03_用面向过程和面向对象方法求解圆形面积_类和对象的关系思考_传智扫地僧 04_类中不写成员函数易犯错误模型 05-易犯错误模型-为什么需要成员函数(补充资料)-传智扫地僧 06_课堂答疑类中写成员函数_调用的时才会执行...
主要我怕部分“懒人”修改本程序的界面,然后作为自己的东东去发布,还美其名曰“原创”(汗!),我想你不会是这样的人。 发源代码的目的是抛砖引玉(小弟我抛砖,有玉的尽量砸过来)。AI算法是通用的,并不...
基于SuperSocket的服务器 和 客户端程序 所需要的DLL 服务器端<控制台Console程序> (.Net4.0)需要引用 ...本人菜鸟一枚,抛砖引入,欢迎一起来研究这个Socket开发框架 QQ:2360450496 SuperSocket官方QQ群373076764
利用超文本浏览框的即将跳转事件作为中转,就可以获得从网页上点击后要跳转的地址,这个地址将作为exe要执行什么操作的指令...本例程只做抛砖之用,高手飘过。。。。。。@易语言源码分享站。Tags:易语言超文本浏览框。
文件目录部分(Unicode化了部分常用命令,一些使用核心库的命令无法处理): W版正则: W版文件搜索(该部分源码作者是:home.php?mod=spaceuid=320499 ,该命令可以无缝衔接核心库的文件搜索): PS: 对于更多命令...
PHP简洁函数 主题:类菌体PHP简洁函数 简述:PHP简单明了函数语法 适合人群:对开源社区感兴趣,对php感兴趣,有一点时间了解下php 备注:希望大家抛砖,仍蛋,呵呵 1、与mysql相关 mysql_connect 建立一个与MySQL...