JSP學習要點記錄
2024-09-05 00:19:28
供稿:網友
這個是我原來學習的時候寫的一個筆記,可能沒有寫完,大致看了一下,對新人可能有些用處,就貼上來了。
這個筆記很古老了,今天整理硬盤翻出來的,所以其中的觀點可能是錯的。
有時間再改了。
當一個瀏覽器向服務器請求一個jsp文件時,這個jsp文件首先被web應用服務器編譯成servlet并執行,然后將所產生的結果作為一個html文件傳給瀏覽器。只要在jsp文件中加入一些控制,便可輕易的實現對數據的動態顯示。以后,如果再有對這個jsp文件的請求,如果該文件沒有作任何修改,它將不會再被編譯,而是直接執行已編譯好的servlet。然而,在web應用服務器上的這些處理都是需要時間和資源的,必然會加大web應用服務器的負荷和相應的延長響應時間。特別是整個系統剛剛啟動或是有大量jsp文件作了改動以后。
jsp的功能是相當強大的,有的人說它甚至能夠完成幾乎所有的功能。這確實沒有錯誤,但是當我們考慮到代碼的復用性和實現的難易程度時,恐怕所有的功能都通過jsp文件來實現就不是什么好的選擇了。更多的,我們還是用jsp文件作為一個response,來動態的顯示某一狀態下的數據。jsp的另一個特點就是它很象html文件,也是由許多的標簽所組成的,所以我們也可以利用所見即所得的編輯器(如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語句。只有這樣,我們的程序才能達到更高的利用率,減少開發的工作量。