簡體   English   中英

如何在不將JSP用作網頁的情況下將其用作模板

[英]How to use JSP as a template without serving it as a webpage

據我了解,JSP是為客戶服務的東西。 但是是否可以僅將JSP用作模板來動態組裝html頁面,然后將其提供給客戶端? 我的意思是這個

  1. Servlet接收來自用戶的調用
  2. 經過一些計算,我的servlet調用JSP來動態地組裝html頁面
  3. servlet獲取或將JSP“結果”(結果html頁面)轉換為String
  4. 現在,該Servlet可以使用該String進行任何操作。 它可以將其返回為html網頁,也可以將其存儲在數據庫中或其他任何形式。 畢竟,這里的字符串是正確的html頁面/文本。

為了進行比較,Python具有Jinja2,其功能與我剛才解釋的完全一樣。 在Java中,最接近Jinja2的東西似乎是JSP。

我需要一個模板來動態地組裝html頁面。 如果我可以使用上述JSP,那么這將解決Java中的問題。 請注意,我本身並不關心JSP。 我只需要一個類似於Jinja2的模板(如果我可以在Java上的App-Engine上使用Jinja2,那將是理想的)。 另外,我對JSP還是陌生的。 因此,如果您有答案,請格式化為示例; 那將是真正有幫助的。

由於業務原因,我正在從Python App-Engine遷移到Java App-Engine。

這是可能的,但是您需要跳過很多圈,具體細節取決於特定的容器-在本例中為appengine。

快速總結:

  • 創建一個偽造的httpservletresponse,包裝渲染后訪問的輸出流。 即使規范允許,您也不能使用httpservletresponsewrapper,但該環境不會
  • 將所有請求屬性存儲在地圖中,如果它們被突變,您將在以后將其恢復
  • 使用requestdispatcher.include,傳入真實請求和您的綜合響應
  • 恢復請求屬性
  • 從輸出流中讀取字符串

特別注意請求/響應的副作用,例如,僅調用getwriter或getoutputstream之一的約束,以及最終確定請求(設置狀態或內容長度)的約束

或者只使用力度,把手,freemarker或其他各種Java模板語言之一。 它們都將更加簡單明了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM