生成静态页的问题!

aqu0616 2006-08-17 09:41:55
是这样的,我在做一个静态页的生成,采用的是替换标签法!
可是,现在我有100多个,甚至更多的标签需要处理!比如,把{$content$}这样的标签,替换成文章内容把{$author$}这样的标签替换成作者姓名等等!首先,我需要判断用户自定义模板中是否存在该标签,如果有的话,就从数据库中读出实际内容,并将之替换掉!
现在的问题是,标签数目太多,如果采用传统string.replace("aa","bb")会是一笔相当大的开销,因为要循环100或更多!
有没有更高效的方法呢?
...全文
195 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
aqu0616 2006-08-18
  • 打赏
  • 举报
回复
是这样的,比如,新添加一篇文章,程序从数据库中读出该篇文章所在栏目的内容页模板,然后取出所有用于内容页的标签,然后在模板中把所有存在的标签替换成相应的内容!因为我设计的系统是可以自定义标签的,所以标签数量有可能会非常庞大,而对这么庞大数量的标签进行string = string.replace(标签,标签内容);会产生大量的String对像垃圾,会消耗大量服务器资源!所以我想看看有没有更好的解决方案!实在不行,我就得研读freemarker的源码了:),但目前,似乎时间不够,因为这个系统是我业余作的,白天还要在公司工作,甚至加班!
emin_lee 2006-08-18
  • 打赏
  • 举报
回复
更正:先读出所有的新闻字段~
emin_lee 2006-08-18
  • 打赏
  • 举报
回复
楼主是不是可以这么做:
以生成新闻静态页为例,先把所有的新闻内容读出来,然后去模板页去找,看有没有相应的自定义标记,有就替换,没有,也没有关系,这样,不用每次判断一个标签就进一次库了:)
pauliuyou 2006-08-18
  • 打赏
  • 举报
回复
静态页不错
zhmt 2006-08-18
  • 打赏
  • 举报
回复
呵呵,静态页面的生成属于一次性开销。
没事。
zhmt 2006-08-18
  • 打赏
  • 举报
回复
路过,友情up!
yaray 2006-08-17
  • 打赏
  • 举报
回复
那就用StringBuffer.replace(int start, int end, String str)方法:

StringBuffer sb = new StringBuffer();
sb.append(yourPageModelString);

int startIdx = sb.indexOf(tag);
if(startIdx>=0){
sb = sb.replace(start, startIdx + tag.length(), contents);
}

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧