程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 利用Java開發Web應用(二) 服務器端的實現

利用Java開發Web應用(二) 服務器端的實現

編輯:關於JAVA

在服務器端,如果用 Java 語言實現的話,直接與浏覽器打交道的要算JavaServer Pages(JSPs)和Servlets了。在它們的後面還有通過Java實現的Data Beans、DB Beans和Commands。

1.Java Server Pages(JSPs)

JavaServer Pages(JSPs)是對HTML的另一種擴展,它可以通過一些特殊的標簽向頁面中插入動態的信息。如可以利用<%和%>標簽添加Java 代碼段,用<%=表達式%>將表達式的值寫入頁面,用<jsp:bean>標簽在某一范圍內(request、session或 context)引用Java Bean。

除此之外,JSP的標准標簽擴展機制還允許開發人員編寫自己的標簽和相應的實現方法。這樣,便可以將某些商業邏輯封裝成JSP的標簽,使JSP文件中出現更少的Java代碼,更加象一個HTML文件。

當一個浏覽器向服務器請求一個JSP文件時,這個JSP文件首先被Web應用服務器編譯成servlet並執行,然後將所產生的結果作為一個HTML文件傳給浏覽器。只要在JSP文件中加入一些控制,便可輕易的實現對數據的動態顯示。以後,如果再有對這個JSP文件的請求,如果該文件沒有作任何修改,它將不會再被編譯,而是直接執行已編譯好的servlet。然而,在Web應用服務器上的這些處理都是需要時間和資源的,必然會加大Web應用服務器的負荷和相應的延長響應時間。特別是整個系統剛剛啟動或是有大量JSP文件作了改動以後。有關JSP調用和生命周期的具體細節,請參閱sun公司的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文件中的代碼段,非常便於錯誤的定位和修改。

2. Servlets

Servlet對多數人來說已經不是個陌生的名詞了。它在網站的架構中常作為CGI的替代品,用來收集HTTP請求中的數據,並依據這些數據進行某種操作。通常,我們還可以利用Chained Servlet和Filtered Serlvet來簡化和模塊化Servlet。雖然它也可以用輸出流動態的產生HTTP響應作為HTML頁面傳送給浏覽器,但是這種做法會導致Servlet的程序很長,而且適應性不強,所以我們還是應該盡量將顯示的工作交給JSP去做。與Perl、shell script等CGI相比,Servlet的優勢在於它只駐留一次,可以處理多個HTTP請求,而其他的CGI程序則要對每個請求都創建一個進程。所以,Servlet可以在一定程度上節省對資源的消耗。

很容易得出,Servlet和JSP一樣,都面臨這同一個問題,那就是它的加載需要時間。當一個Web應用啟動後,對某個Servlet的第一次調用往往很慢,而以後的調用就會好多了。這個問題是由Servlet在引擎中的調用方式和生命周期決定的(有關的具體內容請參閱sun公司的Servlet規范文章)。如果一個站點對Web應用的性能十分看重的化,不妨編寫一個簡單的程序,模擬對所有Servlet和JSP文件的HTTP請求來初始化整個Web應用,使其在真正被應用之前就已經加載好了所有的功能。

Servlet也是一種Java程序,所以它也繼承了Java語言的所有特點。如果某個Web應用的所有Servlet都具有一個共同的功能,例如對後端數據庫的連接,我們便可以先編寫一個通用的Servlet來完成這些功能,而其他的Servlet都從這個通用的Servlet繼承下來。當然,這只是 Servlet的優勢的一個例子,如果仔細研究一下,你可以發現許多。而且,目前Java的IDE有很多,如IBM的VisualAge for Java、Borland的Jbuilder和Semantic的VisualCafe,它們都可以用來開發Servlet。它的調試相對來說也是容易的。

3. Java Commands

Java Command是另外一種Java程序,它的目的是被Servlet調用,完成一個相對獨立的功能,例如對某種數據的插入、修改或者刪除。一個交易往往涉及多個功能。我們拿轉帳來說,這個交易就至少包括了兩個操作:把錢從一個帳戶上扣除和把錢添加到另外一個帳戶上。每一個Command都能完成一種功能,通過對Command的不同組合,便可以完成所有的交易。Command與Servlet相比,受到的限制更少,更接近於一般的Java程序。同樣,它也可以用上面提到的開發工具開發和調試。然而所不同的是,由於它需要由Servlet來調用,所以如果要對它進行調試,其上面的Servlet必須要同時完成。或者,也要創建其他的Java應用程序來構造出通過Servlet傳入的參數,然後再調用它。

4. Data Bean

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的話,也不是什麼費力的事情。

5.DB Object

在服務器端,我們要談的最後一個元素就是DB Object。它的目的就是構造對數據庫操作所需要的SQL語句,並且在執行後得到結果集。之所以需要它,是因為我們每次對數據庫的操作都是不同的,如查找功能,會因不同的查詢條件產生許多種情況。這需要依據不同的情況來構造不同的SQL語句。只有這樣,我們的程序才能達到更高的利用率,減少開發的工作量。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved