这是生成然后将html包含到jsp文件中的有效策略吗?

时间:2009-06-05 21:30:26

标签: java jsp

我需要对我的策略进行健全性检查,以便最好地满足项目的要求。基本上我有一个xml文件,需要定期解析并显示html输出(xslt不是一个选项)。

我的想法是,我可以使用单个.jsp页面来检查存储最后解析日期的应用程序变量,以了解重新生成文件是否为'时间'(x天已过)。如果是,我可以通过jsp解析xml并将结果写入静态html文件,然后将其动态地包含在同一个jsp中进行渲染,如果不是,我跳过重新生成并简单地包含html文件。包括html文件而不仅仅是渲染显示是为了保存后续访问的响应/处理时间。

我的问题是这是否是一种明智的方式来解决问题,我的具体问题是1)我是否能够覆盖访问者可能使用或未使用的html文件; 2)动态包括通过jsp以这种方式工作,没有页面重定向。

提前感谢任何想法并忍受长篇文章 -

B'/ P>

3 个答案:

答案 0 :(得分:1)

我使用缓存(例如ehcache)来存储生成的html,以及所需的ttl。

渲染可以由servlet处理(您可以使用jsp,但在servlet中使用更清晰),它将从缓存中查找html,并将其作为响应返回。 如果html不在缓存中,或者因为它尚未生成或者已经过期,那么它将被生成并存储在缓存中。

从xml生成html甚至可以由一个单独的线程处理,以避免在生成用户时出现任何延迟。

答案 1 :(得分:0)

在Servlet中执行XML生成(转换)可能更有意义。我这样说是因为你很可能会有一堆Java代码。对于一堆程序化处理,Servlet可能比JSP更合适。

答案 2 :(得分:0)

为什么不简单地包含JSP本身?如果JSP碰巧将XML“缓存”在一个静态文件中,那么就这样吧,但只要意识到如果在需要重新生成HTML文件的同时调用JSP两次,就会出现竞争条件(除非特别处理)。

但是,至少,这种方式JSP的“客户端”没有暴露给它的“缓存”机制(恰好是一个HTML文件)。

例如,您可以每次只创建一个新的HTML文件,并将其名称存储在应用程序上下文中,或者其他任何内容,因此您永远不会覆盖该文件。你可以将它缓存到RAM,你根本无法缓存它!

关键是客户端只知道JSP,而不关心它是如何或为什么创建HTML的,这应该是应该的。