簡單介紹JS與JSP的區別
阿新 • • 發佈:2019-01-26
JSP技術概述
按照指令碼語言是服務於某一個子系統的語言這種論述, J S P應當被看作是一種指令碼語言,然
而,作為一種指令碼語言, J S P又顯得過於強大了,在J S P中幾乎可以使用全部的J a v a類。
作為一種基於文字的、以顯示為中心的開發技術,J S P提供了Java Servlet 的所有好處,並且,
當與一個JavaBeans 類結合在一起時,提供了一種使內容和顯示邏輯分開的簡單方式。分開內容
和顯示邏輯的好處是,更新頁面外觀的人員不必懂得Java 程式碼,而更新J a v a B e a n s類的人員也不
必是設計網頁的行家裡手,就可以用帶JavaBeans 類的JSP 頁面來定義Web 模板,以建立一個由
具有相似的外觀的頁面組成的網站。JavaBeans 類完成資料提供,這樣在模板中就沒有Java 程式碼,
這意味著這些模板可以由一個HTML 編寫人員來維護。當然,也可以利用Java Servlet來控制網
站的邏輯,通過Java Servlet呼叫J S P檔案的方式來將網站的邏輯和內容分離。本章我們後面將對
這種分離網站的邏輯和內容的設計方法做一些更深入的描述。
在選擇使用一個Java Servlet,還是一個JSP 頁面時,要記住的是, Java Servlet 是一個程式
設計工具,它最適用於不需要頻繁修改的低階應用功能; 而J S P頁面則通過以顯示為中心的描述
性的方法將動態內容和邏輯結合在一起。對於使用一個JSP 頁面的簡單的基於Web 的應用程式,
可以使用定製標記或者S c r i p t l e t,而不是使用JavaBeans 類來將內容與應用邏輯結合起來。定製
標記被打包到一個標記庫中,並被引入到一個JSP 頁面中。S c r i p t l e t是直接嵌入在JSP 頁面中的
很小的J a v a程式碼段。
一般來說,在實際的J S P引擎中, J S P頁面在執行時是編譯式,而不是解釋式的。解釋式的
動態網頁開發工具如A S P、P H P 3等由於速度等原因已經滿足不了當前大型電子商務應用的需要
了,傳統的開發技術都在向編譯執行的方式改變,如A S P→A S P +;P H P 3→P H P 4。而儘管J S P的
規範書中並沒有要求實際的J S P引擎要使用編譯式的執行方式,但估計一般是不會使用解釋的方
式來執行J S P頁面的。通常說來, J S P頁面一般是翻譯為S e r v l e t的J a v a原始檔,再經過J a v a編譯器
編譯為S e r v l e t的c l a s s檔案。為什麼要編譯為S e r v l e t呢?據說是為了讓原先的S e r v l e t引擎可以直接
服務於J S P,而J S P引擎就僅僅需要將J S P轉譯為S e r v l e t就可以了。這裡要注意的是: J S P規範書
中並沒有規定如何將J S P頁面轉譯為S e r v l e t,因此,不同的J S P引擎轉譯的結果也是不一樣的。
在J S P檔案轉譯為S e r v l e t以後,每次客戶機(通常是使用者的We b瀏覽器)向伺服器請求這一個J S P
檔案的時候,伺服器將檢查自上次編譯後J S P檔案是否有改變,如果沒有改變,就直接執行
S e r v l e t,而不用再重新編譯,其效率是相當高的。一般來說, J S P檔案的編譯是在第一個使用者訪
問到這個J S P頁面時發生,而這第一個使用者通常是開發人員自己,這樣,正式放在伺服器上讓用
戶訪問的J S P檔案一般都已經有了對應的編譯好的S e r v l e t了。許多伺服器都有設定,可以使J S P
檔案在第一個使用者訪問之前就預先編譯好,這樣看來,效率就更高了。後面在第4章中,將展示
一個簡單的J S P檔案對應的S e r v l e t。
在J S P規範書中,並沒有明確要求J S P中的程式程式碼部分(稱為S c r i p t l e t)一定要用J a v a來寫,
實際上,有一些J S P引擎就是採用的其他指令碼語言,如:E M A C - S c r i p t、We b L等等,但實際上這幾
種指令碼語言也是構建在J a v a上面,編譯為S e r v l e t來實現的。按照J S P規範書,完全和J a v a沒有任何關
系的S c r i p t l e t也是可以的,不過,由於J S P的強大功能主要在於能和J a v a B e a n s、Enterprise JavaBeans
一起工作,所以即使是Scriptlet部分不使用Java,編譯成的執行程式碼也應該是與Java相關的。