2009-06-05 40 views
0

我需要對我的策略進行合理性檢查,以最好地滿足項目的要求。基本上我有一個XML文件,需要定期解析和HTML輸出顯示(xslt不是一個選項)。這是一個有效的策略,然後生成包括HTML到JSP文件?

我的想法是,我可以使用一個.jsp頁面來檢查存儲最後解析日期的應用程序變量,以瞭解是否'時間'(x天已過)重新生成文件。如果是這樣,我可以通過jsp解析xml,並將結果寫入一個靜態html文件,然後動態將其包含到相同的jsp中進行渲染,如果不是,我跳過重新生成並簡單包含html文件。包括html文件而不僅僅是渲染顯示器是爲了保存後續訪問的響應/處理時間。

我的問題是,這是否是一種聰明的方式來處理事情,我的具體問題是1)我能否覆蓋可能被訪客使用或可能不被訪問者使用的html文件2)將動態包含通過jsp以沒有頁面重定向的方式工作。

感謝您的任何想法和持久的長期崗位 -

b

回答

1

我會使用一個緩存(例如的Ehcache)來存儲生成的HTML,與所需的TTL。

渲染可以通過一個servlet來處理(你可以使用JSP,但在一個servlet清潔劑),這將查找從緩存中的HTML,並返回它作爲響應。 如果html不在緩存中,或者因爲它沒有被生成或者它已經過期,那麼它將被生成並存儲在緩存中。

從XML的HTML的產生甚至可以由一個單獨的線程來處理,以避免延誤到用戶正在生成而它。

0

在Servlet做XML生成(翻譯)可能更有意義。我這樣說是因爲你很可能會有一堆Java代碼。對於一些程序處理來說,Servlet可能比JSP更合適。

+0

瞭解了,技術要求會讓這個保存在jsp中更好,我不能簡單地通過<%! ?然而,整體理論是否存在水? – WillyCornbread 2009-06-05 21:42:02

0

爲什麼不簡單地包含JSP本身?如果JSP恰好將XML「緩存」在一個靜態文件中,那麼就這樣做,但要注意,如果JSP需要重新生成HTML文件兩次,則會有競爭條件(除非特別處理)。

但是,至少,這種方式的JSP的「客戶」不暴露其「緩衝」機制(這恰好是一個HTML文件)。

你可以,例如,只需要創建一個新的HTML文件每一次,而在應用方面,或任何存儲它的名字,所以你永遠不會覆蓋該文件。你可以緩存它的內存,你根本無法緩存它!

的一點是:當客戶端只知道大概的JSP,並不在乎如何或爲何它創建的HTML,這是理所應當的。