【发布时间】:2010-07-10 03:00:57
【问题描述】:
我正在生成如下页面内容:
// index.jsp
<%
List<Horse> horses = database.getHorses();
for (Horse it : horses) {
%>
<div><%= it.getName() %></div>
<%
}
%>
是否可以在jsp文件末尾抓取整个页面内容,并将其转储为String,如:
String page = this.getPrintWriter().toString();
我只是好奇这是否可能。我可能会尝试将页面缓存为字符串,但需要重写我的页面生成以在一个 StringBuilder 中构建所有内容,例如:
StringBuilder sb = new StringBuilder();
sb.append("<div>"); sb.append(it.getName()); sb.append("</div>");
...
<%= sb.toString() %>
String cached = sb.toString();
谢谢
【问题讨论】:
-
为什么?你想用“缓存”值做什么?答案取决于此。
-
我正在使用谷歌应用引擎,它有一个内存缓存 - 我可以获取整个页面内容的字符串值,并将其放入内存缓存中。下次用户请求该页面时,我可以立即从 memcache 中转储整个内容。我当然可以缓存单个 Horse 对象并重新生成内容,它至少可以让我免于访问数据库 - 只是不确定什么是更好的做法 - 谢谢
-
是用户特定的内容吗? IE。数据特定于每个访问者。还是应用程序范围内的常量? IE。只需在 webapp 启动期间加载一次并永久使用而无需重新加载?
-
是的,它是特定于每个用户的数据 - 每个用户将拥有不同的马匹 - 他们可以修改该列表,但不会经常发生 - 所以我认为它可能很酷只缓存整个页面内容。
标签: google-app-engine jsp servlets