簡體   English   中英

讀取JSP文件並生成HTML-而不是通過Web服務器

[英]Read a JSP file and produce HTML - not with a web server

如果我想閱讀類似的jsp:

File f = new File("my.jsp");

然后我希望它生成預期的HTML,例如說一個字符串(byte [],OutputStream等),我該怎么做?

我認為這里有一些變壓器。 誰能指出我正確的方向?

JSP文件被翻譯並編譯為Servlet類,因此它不會直接生成html文件,原因是JSP作為Servlet可以根據請求中的參數生成動態html,在tomcat服務器中它使用Jasper 2 JSP Engine實現用於處理JSP的JavaServer Pages 2.1規范,因此您可以檢查它,但我不建議您這樣做。

也許您真正想要的是模板機制,例如,您有一個類似於jsp的文本文件,並且具有與EL相似的正弦波,可以訪問某些對象,因此您可以使用模板引擎並將對象與文本綁定並生成您的對象。 HTML。 如果適合您,則可以使用Apache Velocity - HTML示例FreeMaker - HTML example

Jasper是Tomcat使用的JSP編譯器,它自己獲取JSP頁面,對其進行解析,並生成Java代碼(以Servlet的形式,或者至少是以前的形式),該Java代碼將JSP的輸出寫入Servlet響應。 然后,該Java代碼將針對Servlet API的容器實現進行編譯和執行。

Jasper是一個獨立的庫,因此從理論上講,您可以在自己的工具中實例化其類,將其指向JSP,生成servlet代碼,然后編譯並執行它。 但是,您需要傳遞自己的Servlet API接口的模擬實現,因為將通過調用這些接口來確定請求參數(HttpServletRequest)和編寫響應(HttpServletResponse)。 您需要提供HttpServletResponse的版本,該版本將緩沖輸出,以備以后使用。

Tomcat 6 API中 ,您需要的這些位在org.apache.jasper包中。

看一下它,您可能想要創建一個指向JSP的JspCompilationContext ,調用createCompiler() ,然后從那里獲取它。

就模擬Servlet API而言,您可能會從Spring框架提供的用於測試目的的存根實現中獲得所需的東西

Velocity和FreeMarker在這方面都非常出色,並且對於基本模板制作而言則更加容易。

但是,可以做到。

我在這里解釋了一個示例: 不帶HTTP的Tomcat JSP / JSTL

從Web應用程序中顯然很容易(因為所有jar都在其中),但是可以在外部完成,您只需要為程序標識和合適的jar即可。

暫無
暫無

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

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