JSP學習要點記錄
最後更新:2017-02-28
來源:互聯網
上載者:User
js 這個是我原來學習的時候寫的一個筆記,可能沒有寫完,大致看了一下,對新人可能有些用處,就貼上來了。
這個筆記很古老了,今天整理硬碟翻出來的,所以其中的觀點可能是錯的。
有時間再改了。
當一個瀏覽器向伺服器請求一個JSP檔案時,這個JSP檔案首先被Web應用伺服器編譯成servlet並執行,然後將所產生的結果作為一個HTML檔案傳給瀏覽器。只要在JSP檔案中加入一些控制,便可輕易的實現對資料的動態顯示。以後,如果再有對這個JSP檔案的請求,如果該檔案沒有作任何修改,它將不會再被編譯,而是直接執行已編譯好的servlet。然而,在Web應用伺服器上的這些處理都是需要時間和資源的,必然會加大Web應用伺服器的負荷和相應的延長回應時間。特別是整個系統剛剛啟動或是有大量JSP檔案作了改動以後。
JSP的功能是相當強大的,有的人說它甚至能夠完成幾乎所有的功能。這確實沒有錯誤,但是當我們考慮到代碼的複用性和實現的難易程度時,恐怕所有的功能都通過JSP檔案來實現就不是什麼好的選擇了。更多的,我們還是用JSP檔案作為一個response,來動態顯示某一狀態下的資料。JSP的另一個特點就是它很象HTML檔案,也是由許多的標籤所組成的,所以我們也可以利用所見即所得 (WYSIWYG)的編輯器(如WebSphere Studio中的PageDesinger)來編輯它。而且,它還更加有利於不同開發人員之間的協作。JSP檔案就像一個模板一樣,等待著不同的資料去填充,而實現這個動態機制的正是那些嵌入HTML標籤的JSP標籤。基於這個思路,首先,網頁的編輯人員可以將大致的模板(網頁的靜態部分)先設計出來,然後再由開發人員向模板中添加動態控制碼。當全部完成後,就可以利用JSP的某種調試工具進行調試。
JSP檔案的調試分為兩個階段,編譯階段和運行態階段。應該說,JSP檔案在編譯階段的調試是比較困難的,因為任何的語法錯誤都會導致JSP檔案的編譯不通過,但是卻沒有任何資訊說明到底是什麼地方有錯。有的時候會因為少了一個括弧花上很長的時間。一旦編譯通過,運行態的問題就有方法得以解決了。我認為,最好的運行態調試工具要數VisualAge for Java的WebSphere Test Environment中的JSP執行監視器了,它可以逐步執行JSP檔案中的程式碼片段,非常便於錯誤的定位和修改。
與Perl、shell script等CGI相比,Servlet的優勢在於它只駐留一次,可以處理多個HTTP請求,而其他的CGI程式則要對每個請求都建立一個進程。所以,Servlet可以在一定程度上節省對資源的消耗。
Servlet和JSP一樣,都面臨同一個問題,那就是它的載入需要時間。當一個Web應用啟動後,對某個Servlet的第一次調用往往很慢,而以後的調用就會好多了。這個問題是由Servlet在引擎中的調用方式和生命週期決定的。如果一個網站對Web應用的效能十分看重的化,不妨編寫一個簡單的程式,類比對所有Servlet和JSP檔案的HTTP請求來初始化整個Web應用,使其在真正被應用之前就已經載入好了所有的功能。
Servlet也是一種Java程式,所以它也繼承了Java語言的所有特點。如果某個Web應用的所有Servlet都具有一個共同的功能,例如對後端資料庫的串連,我們便可以先編寫一個通用的Servlet來完成這些功能,而其他的Servlet都從這個通用的Servlet繼承下來。
Data Bean,顧名思義,是與資料打交道的。更嚴格的說,它是對資料的一種封裝。雖然也有Bean,但是卻與JavaBeans不同,它並沒有JavaBeans所具有的事件處理。可以說,Data Bean是整個編程模型中最簡短的部分了,因為它除了資料域以外,就是對這些資料域進行操作的get和set方法了。Data Bean實際上是對資料結構的一種映射。一般的,如果一個Web應用的資料庫schema確定以後,Data Bean的數目和介面也就基本上決定了。而Data Bean的開發,就更加簡單了。在許多的Java開發環境中,都可以通過wizard來產生Data Bean,開發人員需要做的,只不過是告訴wizard這個Data Bean到底有多少個屬性,每個屬性的類型是什麼。其實,如果自己手工編寫Data Bean的話,也不是什麼費力的事情。
在伺服器端,我們要談的最後一個元素就是DB Object。它的目的就是構造對資料庫操作所需要的SQL語句,並且在執行後得到結果集。之所以需要它,是因為我們每次對資料庫的操作都是不同的,如尋找功能,會因不同的查詢條件產生許多種情況。這需要依據不同的情況來構造不同的SQL語句。只有這樣,我們的程式才能達到更高的利用率,減少開發的工作量。