抛砖:用freemarker、webwork公布静态页面的方法
抛砖:用freemarker、webwork发布静态页面的方法
嗯,有时间看看。
我一个站点是按日期存静态文件目录,每天凌晨切换目录,所有文件的文件名是URL的32位MD5 Hash,对外链接不变,访问了才生成静态文件,一天有好几个G,切换目录后有另一个程序去删老的目录。
就是这样。
提供静态页面的编辑功能,包括搜索替换等。
静态页面背后有数据库支持,重新输出相关联的静态页面。
这两种都是针对变化不频繁的情况,如果静态页面的某个部分变化频繁,最简单的就是包含一段动态的js。
而针对这段js使用缓存技术来提升性能。
方法一:(这个方法借鉴freemarker的docs文档Programmer's Guide 的quick start部分,详细请看相关的文档。
java 代码
如果用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 代码
这里的路径和文件名通过webwork的session传入,不知有无其他好方法。
如果生成文件的同时还需要看到生成的页面,则要改写“doExecute”:
java 代码
生成的文件格式不限于html,可以是其他文件格式,如js,text等。
比较这两种方法:
方法一:在需要生成分页文件时,比较合适。
方法二:可以象往常一样使用,一次需要生成多文件则不适合。
不知各位在做这些项目时,使用甚么好方法。
1 楼
idxkx
2007-01-06
顶起来!
2 楼
qingzhuang
2007-01-19
不错!
3 楼
jamesby
2007-01-19
收藏先,有新的静态页面需求的时候再研究下FreeMarker,我目前用xslt转换实现的静态页面,唉老东西得舍得扔阿。
4 楼
ronghao
2007-01-19
我用的差不多就是第一种方法,现在想的是如何把模板编辑也给可视化。开发dreamwearver插件?
5 楼
goby2008
2007-01-21
不错,值得研究
6 楼
quaff
2007-02-06
第二种方法,覆盖FreemarkerResult的
protected void postTemplateProcess(Template template, TemplateModel model)方法,在这个方法里面生成静态页面
protected void postTemplateProcess(Template template, TemplateModel model)方法,在这个方法里面生成静态页面
7 楼
adablue77
2007-02-06
其实我更想知道怎么管理大量的静态页面更好些,合适生成静态页面更好些,不过还是收藏了,谢谢先
8 楼
colonel
2007-02-08
引用
quaff 1 天前
第二种方法,覆盖FreemarkerResult的
protected void postTemplateProcess(Template template, TemplateModel model)方法,在这个方法里面生成静态页面
第二种方法,覆盖FreemarkerResult的
protected void postTemplateProcess(Template template, TemplateModel model)方法,在这个方法里面生成静态页面
嗯,有时间看看。
9 楼
colonel
2007-02-08
我在开发相关项目的时候,也没有一个好的方法管理海量的静态页面,所以如果各位晓得的话,请多多指教。
10 楼
caocao
2007-02-09
colonel 写道
我在开发相关项目的时候,也没有一个好的方法管理海量的静态页面,所以如果各位晓得的话,请多多指教。
我一个站点是按日期存静态文件目录,每天凌晨切换目录,所有文件的文件名是URL的32位MD5 Hash,对外链接不变,访问了才生成静态文件,一天有好几个G,切换目录后有另一个程序去删老的目录。
11 楼
CrayEye
2007-04-06
关于第一个方法:
我想问一下这个 Map contents 这个data model在webwork的action中怎么得到?
是自己new一个Map 然后把数据put进去么?
想利用webwork构建好model只能用第二种方法么
我想问一下这个 Map contents 这个data model在webwork的action中怎么得到?
是自己new一个Map 然后把数据put进去么?
想利用webwork构建好model只能用第二种方法么
12 楼
colonel
2007-04-11
引用
关于第一个方法:
我想问一下这个 Map contents 这个data model在webwork的action中怎么得到?
是自己new一个Map 然后把数据put进去么?
我想问一下这个 Map contents 这个data model在webwork的action中怎么得到?
是自己new一个Map 然后把数据put进去么?
就是这样。
13 楼
lyo
2007-05-08
这个问题是及其复杂的,和具体技术无关,而是和策略有关:
论坛上的关于生成静态页面的帖子,大都回答的简单,不能用于实际项目中。单独生成一个静态页面肯定没问题,模板+数据就可以。但是真是场景是:我一个网页 A,里面包含一个网页B(就是 A中有B这篇文章)的标题。我给A生成静态页面的时候,如果知道给A里面的连接B也生成静态页面呢? 如果B文章的标题更新了,我如何知道把B重新生成静态页面的同时,也要重新把A生成静态页面呢,因为A里面包括了B的标题!因此B的标题更新后,一定要把引用B文章的所有页面都重新生成静态的html,这个如何做到呢? 多谢!
论坛上的关于生成静态页面的帖子,大都回答的简单,不能用于实际项目中。单独生成一个静态页面肯定没问题,模板+数据就可以。但是真是场景是:我一个网页 A,里面包含一个网页B(就是 A中有B这篇文章)的标题。我给A生成静态页面的时候,如果知道给A里面的连接B也生成静态页面呢? 如果B文章的标题更新了,我如何知道把B重新生成静态页面的同时,也要重新把A生成静态页面呢,因为A里面包括了B的标题!因此B的标题更新后,一定要把引用B文章的所有页面都重新生成静态的html,这个如何做到呢? 多谢!
14 楼
OneEyeWolf
2007-05-08
用JSP也可以,不需要模板。
方法是用过滤器,收到JSP页面的Response,然后,将response的内容,写在一个html文件当中。
就完事了。
方法是用过滤器,收到JSP页面的Response,然后,将response的内容,写在一个html文件当中。
就完事了。
15 楼
youcai
2007-05-08
lyo 写道
这个问题是及其复杂的,和具体技术无关,而是和策略有关:
论坛上的关于生成静态页面的帖子,大都回答的简单,不能用于实际项目中。单独生成一个静态页面肯定没问题,模板+数据就可以。但是真是场景是:我一个网页 A,里面包含一个网页B(就是 A中有B这篇文章)的标题。我给A生成静态页面的时候,如果知道给A里面的连接B也生成静态页面呢? 如果B文章的标题更新了,我如何知道把B重新生成静态页面的同时,也要重新把A生成静态页面呢,因为A里面包括了B的标题!因此B的标题更新后,一定要把引用B文章的所有页面都重新生成静态的html,这个如何做到呢? 多谢!
论坛上的关于生成静态页面的帖子,大都回答的简单,不能用于实际项目中。单独生成一个静态页面肯定没问题,模板+数据就可以。但是真是场景是:我一个网页 A,里面包含一个网页B(就是 A中有B这篇文章)的标题。我给A生成静态页面的时候,如果知道给A里面的连接B也生成静态页面呢? 如果B文章的标题更新了,我如何知道把B重新生成静态页面的同时,也要重新把A生成静态页面呢,因为A里面包括了B的标题!因此B的标题更新后,一定要把引用B文章的所有页面都重新生成静态的html,这个如何做到呢? 多谢!
提供静态页面的编辑功能,包括搜索替换等。
静态页面背后有数据库支持,重新输出相关联的静态页面。
这两种都是针对变化不频繁的情况,如果静态页面的某个部分变化频繁,最简单的就是包含一段动态的js。
而针对这段js使用缓存技术来提升性能。