有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

我的想法是我可以用一个。jsp页面,检查存储最后解析日期的应用程序变量,以了解是否到了重新生成文件的“时间”(x天已经过去)。如果是,我可以通过jsp解析xml,并将结果写入一个静态html文件,然后动态地将其包含到同一个jsp中进行呈现,如果不是,我将跳过重新生成,只包含html文件。包含html文件而不仅仅是呈现显示是为了节省后续访问的响应/处理时间

我的问题是,这是否是一种明智的方式,我具体关心的是1)我是否能够覆盖一个html文件,该文件可能会被访问者使用,也可能不会被访问者使用,2)动态包含是否会通过jsp以这种方式工作,而无需页面重定向

提前感谢您的任何想法和长期的帖子-

b


共 (3) 个答案

  1. # 1 楼答案

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

    但是,通过这种方式,JSP的“客户机”至少不会暴露于其“缓存”机制(这恰好是一个HTML文件)

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

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

  2. # 2 楼答案

    在Servlet中生成(翻译)XML可能更有意义。我这么说是因为你很可能会有一堆Java代码。Servlet可能比JSP更适合于一系列编程处理

  3. # 3 楼答案

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

    呈现可以由servlet(可以使用jsp,但在servlet中使用cleaner)处理,它将从缓存中查找html,并简单地将其作为响应返回。 如果html不在缓存中,或者是因为它尚未生成,或者已经过期,那么它将被生成并存储在缓存中

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