servlet與jsp比較

來源:互聯網
上載者:User

1. Servlet是什麼?

       Java提供了一整套客戶機/伺服器解決方案,在這個方案中,程式可以自動地下載到用戶端並執行,這就是applet。但是它僅僅是問題的一半。問題的另一半就是Servlet,Servlet可以被認為是伺服器端的applet。Servlet被Web伺服器載入和執行,就如同applet被瀏覽器載入和執行一樣。Servlet從用戶端(通過Web伺服器)接收請求,執行某種作業,然後返回結果。使用servlet的基本流程如下:

· 用戶端通過HTTP提出請求.

· Web伺服器接收該請求並將其發給servlet。如果這個servlet尚未被載入,Web伺服器將把它載入到Java虛擬機器並且執行它。

· servlet將接收該HTTP請求並執行某種處理。

· servlet將向Web伺服器返回應答。

· Web伺服器將從servlet收到的應答發送給用戶端。

      由於servlet是在伺服器上執行,通常與applet相關的安全性的問題並不需實現。要注意的是Web瀏覽器並不直接和servlet通訊,servlet是由Web伺服器載入和執行的。而servlet是用Java編寫的,所以它們一開始就是平台無關的。這樣,Java編寫一次就可以在任何平台運行(write once,run anywhere)的承諾就同樣可以在伺服器上實現了。servlet還有一些CGI指令碼所不具備的獨特優點:

l         servlet是持久的。servlet只需Web伺服器載入一次,而且可以在不同請求之間保持服務(例如一次資料庫連接)。與之相反,CGI指令碼是短暫的、瞬態的。每一次對CGI指令碼的請求,都會使Web伺服器載入並執行該指令碼。一旦這個CGI指令碼運行結束,它就會被從記憶體中清除,然後將結果返回到用戶端。CGI指令碼的每一次使用,都會造成程式初始化過程(例如串連資料庫)的重複執行。

l         servlet是與平台無關的。如前所述,servlet是用Java編寫的,它自然也繼承了Java的平台無關性。

l         servlet是可擴充的。由於servlet是用Java編寫的,它就具備了Java所能帶來的所有優點。Java是健壯的、物件導向的程式設計語言,它很容易擴充以適應你的需求。servlet自然也具備了這些特徵。

l         servlet是安全的。從外界調用一個servlet的惟一方法就是通過Web伺服器。這提供了高水平的安全性保障,尤其是在你的Web伺服器有防火牆保護的時候。

setvlet可以在多種多樣的客戶機上使用。由於servlet是用Java編寫的,所以你可以很方便地在HTML中使用它們,就像你使用applet一樣。

 

2. JSPServlet

      JSP是一種指令碼語言,封裝了Java Servlet系統的介面,簡化了Java和Servlet的使用難度,同時通過擴充JSP標籤(TAG)提供了網頁動態執行的能力。儘管如此,JSP仍沒有超出Java和Servlet的範圍,不僅JSP頁面上可以直接寫Java代碼,而且JSP是先被譯成Servlet之後才實際啟動並執行。JSP在伺服器上執行,並將執行結果輸出到用戶端瀏覽器,我們可以說基本上與瀏覽器無關。它是與JavaScript不同的,JavaScript是在用戶端的指令碼語言,在用戶端執行,與伺服器無關。

那麼JSP是什嗎?就是Servlet.

       JSP與Servlet之間的主要差異在於,JSP提供了一套簡單的標籤,和HTML融合的比較好,可以使不瞭解Servlet的人可以做出動態網頁來。對於Java語言不熟悉的人(比如像我),會覺得JSP開發比較方便。JSP修改後可以立即看到結果,不需要手工編譯,JSP引擎會來做這些工作;而Servelt缺需要編譯,重新啟動Servlet引擎等一系列動作。但是在JSP中,HTML與程式碼混雜在一起,而Servlet卻不是這樣。也許大家比較混亂了,那麼Servlet又是什嗎?下面我們對JSP的運行來做一個簡單的介紹,告訴大家怎樣來執行一個JSP檔案: 
當Web伺服器(或Servlet引擎,應用伺服器)支援JSP引擎時,JSP引擎會照著JSP的文法,將JSP檔案轉換成Servlet代碼源檔案,接著Servlet會被編譯成Java可執行位元組碼(bytecode),並以一般的Servlet方式載入執行

JSP文法簡單,可以方便的嵌入HTML之中,很容易加入動態部分,方便的輸出HTML。在Servlet中輸出HTML缺需要調用特定的方法,對於引號之類的字元也要做特殊的處理,加在複雜的HTML頁面中作為動態部分,比起JSP來說是比較困難的。

除去了轉換和編譯階段,JSP和Servlet之間的區別實在是不大。

      JSP引擎通常架構在Servlet引擎之上,本身就是一個Servlet,把JSP檔案轉譯成Servlet原始碼,再調用Java編譯器,編譯成Servlet。這也是JSP在第一次調用時速度比較慢的原因,在第一次編譯之後,JSP與Servlet速度相同.下面我們來看看為什麼他們在第一次編譯後再編譯的速度相同:

      在整個運行過程中,JSP引擎會檢查編譯好的JSP(以Servlet形式存在)是否比原始的JSP檔案還新,如果是,JSP引擎不會編譯;如果不是,表示JSP檔案比較新,就會重新執行轉譯與編譯的過程。

      JSP引擎:一般JSP引擎都以Servlet引擎為基礎,並以Servlet的形式出現。同時,在各種免費和商業引擎的實現中,Servlet引擎和Jsp引擎通常也是一起出現,我們成為Servlet/JSP引擎,或從某種成為JSP引擎。

      JSP引擎是可以提供JSP和Servlet運行支援並對其生存周期進行管理的系統級實體。

      在JSP頁面第一次被請求時,JSP引擎會將JSP原始檔案轉換成Servlet原始碼,然後調用Java編譯器,編譯成Servlet,並在Servlet引擎中執行。當再次有請求的時候,JSP引擎會見差異編譯好的JSP是否比原來的JSP原始檔案要新,如果是,運行Servlet;如果不是,表示檔案已經更新的了,就會從新執行轉換和編譯的過程。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.