Java Servlet和JSP比較

JavaServlet及其特色java

Servlet是Java技術對CGI編程的回答。Servlet程序在服務器端運行,動態地生成Web頁面。與傳統的CGI和許多其餘相似CGI的技術相比,Java Servlet具備更高的效率,更容易使用,功能更強大,具備更好的可移植性,更節省投資(更重要的是, Servlet程序員收入要比Perl程序員高:-):程序員

高效:web

在傳統的CGI中,每一個請求都要啓動一個新的進程,若是CGI程序自己的執行時間較短,啓動進程所須要的開銷極可能反而超過實際執行時間。而在Servlet中,每一個請求由一個輕量級的Java線程處理(而不是重量級的操做系統進程)。數據庫

在傳統CGI中,若是有N個併發的對同一CGI程序的請求,則該CGI程序的代碼在內存中重複裝載了N次;而對於Servlet,處理請求的是N個線程,只須要一份Servlet類代碼。在性能優化方面,Servlet也比CGI有着更多的選擇,好比緩衝之前的計算結果,保持數據庫鏈接的活動,等等。編程

方便:性能優化

Servlet提供了大量的實用工具例程,例如自動地解析和解碼HTML表單數據、讀取和設置HTTP頭、處理Cookie、跟蹤會話狀態等。服務器

功能強大:併發

在Servlet中,許多使用傳統CGI程序很難完成的任務均可以輕鬆地完成。例如,Servlet可以直接和Web服務器交互,而普通的CGI程序不能。Servlet還可以在各個程序之間共享數據,使得數據庫鏈接池之類的功能很容易實現。ide

可移植性好:工具

Servlet用Java編寫,Servlet API具備完善的標準。所以,爲I-Planet Enterprise Server寫的Servlet無需任何實質上的改動便可移植到Apache、Microsoft IIS或者WebStar。幾乎全部的主流服務器都直接或經過插件支持Servlet。

節省投資:

不只有許多廉價甚至免費的Web服務器可供我的或小規模網站使用,並且對於現有的服務器,若是它不支持Servlet的話,要加上這部分功能也每每是免費的(或只須要極少的投資)。

JSP及其特色

JavaServer Pages(JSP)是一種實現普通靜態HTML和動態HTML混合編碼的技術,有關JSP基礎概念的說明請參見《JSP技術簡介 》。

許多由CGI程序生成的頁面大部分仍舊是靜態HTML,動態內容只在頁面中有限的幾個部分出現。可是包括Servlet在內的大多數CGI技術及其變種,老是經過程序生成整個頁面。JSP使得咱們能夠分別建立這兩個部分。例如,下面就是一個簡單的JSP頁面:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD><TITLE>歡迎訪問Java中文網</TITLE></HEAD>
<BODY>
<H1>歡迎</H1>
<SMALL>歡迎,
<!-- 首次訪問的用戶名字爲"New User" -->
<% out.println(Utils.getUserNameFromCookie(request)); %>
要設置賬號信息,請點擊
<A HREF=http://www.javaweb.cc/article/"Account-Settings.HTML">這裏</A></SMALL>
<P>
頁面的其他內容。.
</BODY></HTML>

下面是JSP和其餘相似或相關技術的一個簡單比較:

JSP和Active Server Pages(ASP)相比

Microsoft的ASP是一種和JSP相似的技術。JSP和ASP相比具備兩方面的優勢。首先,動態部分用Java編寫,而不是VB Script或其餘Microsoft語言,不只功能更強大並且更易於使用。第二,JSP應用能夠移植到其餘操做系統和非Microsoft的Web服務器上。

JSP和純Servlet相比

JSP並無增長任何本質上不能用Servlet實現的功能。可是,在JSP中編寫靜態HTML更加方便,沒必要再用 println語句來輸出每一行HTML代碼。更重要的是,藉助內容和外觀的分離,頁面製做中不一樣性質的任務能夠方便地分開:好比,由頁面設計專家進行HTML設計,同時留出供Servlet程序員插入動態內容的空間。

JSP和服務器端包含(Server-Side Include,SSI)相比

SSI是一種受到普遍支持的在靜態HTML中引入外部代碼的技術。JSP在這方面的支持更爲完善,由於它能夠用Servlet而不是獨立的程序來生成動態內容。另外,SSI實際上只用於簡單的包含,而不是面向那些可以處理表單數據、訪問數據庫的「真正的」程序。

JSP和JavaScript相比

JavaScript可以在客戶端動態地生成HTML。雖然JavaScript頗有用,但它只能處理以客戶端環境爲基礎的動態信息。除了Cookie以外,HTTP狀態和表單提交數據對JavaScript來講都是不可用的。另外,因爲是在客戶端運行,JavaScript不能訪問服務器端資源,好比數據庫、目錄信息等等。

相關文章
相關標籤/搜索