2012-03-01 154 views
1

我只想知道在下面的情況下會發生什麼,而不涉及技術細節。需要JSP重新編譯?

JSP的主要優點是我們有單獨的表示(靜態HTML)和動態應用程序邏輯。所以我們可以對其中的任何一個進行更改而不會影響其他兩個。現在假設我們有一個預編譯的JSP到servlet或者字節碼中,我們想在表示部分做一些改變,那麼我們是否必須重新編譯整個東西,即使我們沒有對應用程序邏輯做任何改變?

謝謝大家的回答,但是我得到的所有答案都指出,無論是自動還是手動,JSP都需要重新編譯到servlet中,然後將其轉換爲相應的byctecode。總之,一個全新的文件將被創建,我想。

回答

2

只要是JSP,就不需要編譯/轉換。應用程序服務器會自動將您的JSP轉換爲相應的servlet,一個Java文件(首次訪問JSP),然後將其編譯爲類文件。無論何時您更新JSP文件以及服務器何時收到對該資源(JSP)的請求,它都會檢查上次更新的時間,並在需要時執行上述工作。

0

不可以。如果更改了JSP,一般來說,servlet/jsp容器將「看到」jsp已更改並將重新編譯它。

這就是說,我不清楚你的部署模型。如果你是「預編譯」這些asps並將它們添加到你的.war中,那麼你可能會失敗。

1

如果您使用Tomcat,它被歸類爲「聰明的容器」。它會監視.JSP上的更改,並將它們編譯爲Servlet類並在需要時重新加載。

http://tomcat.apache.org/tomcat-3.3-doc/appdev/deployment.html

重新裝入。如果您希望Tomcat監視WEB-INF/classes目錄中的Java類文件或WEB-INF/lib目錄中的JAR文件的更改,請將其設置爲「true」。如果發現這樣的變化,Tomcat將關閉 並自動重新載入您的應用程序,並獲取這些 更改。默認值(「false」)意味着此類更改將被忽略 。注意:雖然此功能在開發過程中非常有用,但需要開銷來執行檢查。此功能應該通常不會用於已部署的生產應用程序中。

Tomcat also periodically checks timestamps of JSP s確定它們是否被更新。

1

是,否。 JSP最終被編譯成servlet,但是如果servlet容器發生了變化,它通常會重新編譯JSP,這是一個相當快速的操作。