JSP簡明教程:JSP基礎
2024-09-05 00:19:08
供稿:網友
jsp是建立在java servlets模型之上的表達層技術,它使編寫html變得更簡單。像ssjs一樣,它也允許你將靜態html內容與服務器端腳本混合起來生成動態輸出。jsp把java作為默認的腳本語言,然而,就像asp可以使用其他語言(如javascript和vbscript)一樣,jsp規范也允許使用其他語言。盡管jsp和java比那些基于簡單語言的腳本平臺(如javascript和vbscript)具有更好的兼容性和堅固性,但同時java的學習難度也比簡單的腳本語言要大。
為了兼顧兩者的優點――一個健壯的web應用平臺和一種簡單易用的語言工具――jsp提供了大量的服務器端標簽(tag),這使得開發者可以在不寫java代碼的情況下完成大多數動態內容操作。那些只熟悉編寫腳本的開發人員,甚至僅僅是html設計者,就可以使用jsp標簽生成簡單的輸出而不必學習java。高級的腳本編寫者或java程序員也可以使用這些標簽,如果要在jsp頁面中完成更高級的操作,他們可以使用完整的java語言。
page過時了,component妙極了
要理解jsp怎樣聯合無限的力量來輕而易舉地實現魔術般的效果,你必須首先了解“組件為中心的網頁開發”和“頁面為中心的網頁開發”的區別。
ssjs和asp都是在幾年前推出的,那時網絡還很年輕,沒有人知道除了把所有的商務、數據和表達邏輯統統堆進原始網頁中之外還有什么更好的解決方法。這種以頁面為中心的模型容易學習并且得到相當快速的發展。然而,隨著時間的推移,人們認識到這種方法不適于構建大型的、可升級的web應用程序。在腳本環境中書寫的表達邏輯被鎖在頁面內,只有通過剪切和粘貼才能被重用。表達邏輯通常和商務及數據邏輯混在一起,這使得當程序員試圖改變一個應用程序的外觀而不想破壞與之緊密結合的商務邏輯時,應用程序的維護就像在蛋殼上走路一樣困難。其實在企業中,可重用組件的應用早已經很成熟,沒有人愿意為他們的應用程序重寫那些邏輯。html和圖形設計師把他們的設計的實施工作交給了web編寫者,使他們不得不加倍工作――常常是手工編寫,因為沒有合適的工具可以把服務器端腳本與html內容結合起來。簡而言之,隨著web應用程序的復雜性不斷提升,以頁面為中心的開發方式的局限性變得明顯起來。
與此同時,人們一直在尋找建立web應用程序的更好方法,組件在客戶機-服務器領域風行起來。javabeans和activex被“快速應用程序開發”(rad)工具發行商推廣給java和windows應用程序開發者用來快速開發復雜的程序。這些技術使某領域內的專家可以為本領域內的垂直應用編寫組件,而開發者可以直接拿來使用而不必掌握這一領域的專門技術。比如,編制旅鼠交配習性圖表的java程序員不需要了解任何關于旅鼠的知識,他只要調用 lemmingsinlove javabeans(javabeans是一種基于java的組件)就可得到相應的領域專門信息,他只需關注如何使軟件更易于使用。出現一種把組件為中心的程序設計方法帶到服務器端web應用領域的技術只是時間的問題。
作為一種以組件為中心的開發平臺,jsp出現了。它以javabeans和enterprise javabeans(ejb)組件包含商務和數據邏輯的模型為基礎,提供大量標簽和一個腳本平臺用來在html頁中顯示由javabeans產生或回送的內容。由于jsp的以組件為中心的性質,他可以被java和非java開發者同樣使用。非java開發者可以通過jsp的標簽(tags)來使用高級java開發者創建的javabeans。java開發者不僅可以創建和使用javabeans,還能在jsp頁中使用java語言來更精密地控制基于底層javabeans的表達邏輯。
jsp請求模型
現在我們來看看jsp是如何處理http請求的。在基本請求模型中,一個請求直接被送到jsp頁中。圖1說明了這個模型中的信息流程。jsp代碼控制著進行邏輯處理時與javabeans組件的交互,并在動態生成的、混合了靜態html代碼的html頁中顯示結果。
圖1.基本jsp請求模型
beans 可以是javabeans 或ejb組件。另外,更加復雜的請求模型可看作從被請求頁呼叫其他jsp頁或java servlets。
jsp引擎技術內幕
jsp引擎實際上要把jsp標簽、jsp頁中的java代碼甚至連同靜態html內容都轉換為大塊的java代碼。這些代碼塊被jsp引擎組織到用戶看不到的java servlet中去,然后servlet自動把它們編譯成java字節碼。這樣,當網站的訪問者請求一個jsp頁時,在他不知道的情況下,一個已經生成的、預編譯過的servlet實際上將完成所有的工作。非常隱蔽-而又高效。因為servlet是編譯過的,所以網頁中的jsp代碼不需要在每次請求該頁時被解釋一遍。jsp引擎只需在servlet代碼最后被修改后編譯一次,然后這個編譯過的servlet就可以被執行了。由于是jsp引擎自動生成并編譯servlet,不用程序員動手編譯代碼,所以jsp能帶給你高效的性能和快速開發所需的靈活性。
如果你從sun的網站下載jsp reference implementation并用它編寫應用程序,你將能夠看到jsp引擎生成的.java和.class文件。如果你想更多地了解所生成的代碼,可以用文本編輯器打開.java文件查看java servlet的代碼。
本文來源于網頁設計愛好者web開發社區http://www.html.org.cn收集整理,歡迎訪問。