如果我們可以讓Tomcat/Jasper使用ANT任務編譯JSP,那麼將WAR預編譯的JSP作爲類文件而不是JSP本身更好嗎?將WAR的類文件(而非JSP本身)發佈到WAR中會更好嗎?
這樣一來,我們就不會受到Weblogic/Webshere JSP編譯問題的束縛。他們得到的所有內容都是'class'文件。
我認爲這需要「jsp」servlet不得不關閉。 Spring/Struts Servlet必須能夠處理'jsp'擴展。
您認爲如何?在其他生產環境中更常見的是什麼?
如果我們可以讓Tomcat/Jasper使用ANT任務編譯JSP,那麼將WAR預編譯的JSP作爲類文件而不是JSP本身更好嗎?將WAR的類文件(而非JSP本身)發佈到WAR中會更好嗎?
這樣一來,我們就不會受到Weblogic/Webshere JSP編譯問題的束縛。他們得到的所有內容都是'class'文件。
我認爲這需要「jsp」servlet不得不關閉。 Spring/Struts Servlet必須能夠處理'jsp'擴展。
您認爲如何?在其他生產環境中更常見的是什麼?
我通常會說不,它不會更好。我覺得要經歷很多麻煩,然後只是將耳朵包裝起來,然後再打包運輸。
如果您的JSP不在生產環境中編譯,並且正在本地編譯或在QA中編譯,那麼您還有其他問題需要解決。
JSP的編譯具有以下優點。
我認爲第一個優勢很重要,第二個優勢並不那麼重要。我個人不關心在編譯jsp的時候,第一個也是唯一的第一個用戶會等一兩秒鐘。但是我非常關心現在的用戶在使用我的應用程序時不會出現編譯錯誤。
我認爲在編譯期間編譯JSP足夠用於驗證,並且不會將生成的.class
文件打包到您的應用程序中。但分發.class
文件也很好。
編譯的JSP不能跨容器移植。它們擴展運行時特定的類。你總是可以嘗試嵌入你自己的JSP實現,但這是一個不同的問題。
編譯好的JSP的類文件怎麼樣?如果我使用Jasper生成類文件,然後將Jasper Jar發送到我的WEB-INF/lib中,則不會有任何運行時問題。不是? – rk2010
可能不是。但是,正如我所提到的那樣,您正在嵌入JSP實現。無法說出可能發生的其他問題。這可能就是這麼簡單。 –
我又創建了一個類似於這個的Q.看起來像「標準實踐」是運送JSP文件http://stackoverflow.com/q/10414823/233306 – rk2010