




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、第1章 Java Web開發(fā)概述在計算機發(fā)展歷史上,網(wǎng)絡的出現(xiàn)是個重要的里程碑。網(wǎng)絡在計算機技術中發(fā)揮著越來越重要的作用。如果說上個世紀是桌面程序的時代,那么本世紀無疑就是網(wǎng)絡程序的 時代。1.1 Web相關概念Web程序也就是一般所說的網(wǎng)站,由服務器、客戶端瀏覽器以及網(wǎng)絡組成。Web程序的好處是使用簡單,不需要安裝、學習,有一臺電腦、一根網(wǎng)線就可以使用。截至2006年底,互聯(lián)網(wǎng)上的網(wǎng)站數(shù)量已經(jīng)超過了1億大關,中國的網(wǎng)站也已經(jīng)有200萬之多了,可見網(wǎng)絡程序的影響力。但Web程序又不是一般意義上的網(wǎng)站。網(wǎng)站的目的是提供信息服務,重在內(nèi)容,程序往往比較簡單。但一個商用的Web程序往往比較復雜,背后
2、結合數(shù)據(jù)庫等技術,例如ERP系統(tǒng)、CRM系統(tǒng)、財務系統(tǒng)、網(wǎng)上辦公、網(wǎng)上銀行、在線業(yè)務辦理等。下面從專業(yè)上解釋一下Web程序相關的幾個概念。1.1.1 胖客戶端程序RCP桌面程序(Desktop Program)也叫胖客戶端程序(Rich Client Program,簡稱RCP)。因為桌面程序需要安裝到計算機上才能運行,并會導致計算機軟件的體積越來越大,因此人們形象地稱桌面程序為胖客戶端程序。計算機上安裝的任何程序都是RCP。例如辦公軟件Word、Excel,聊天工具QQ、MSN,播放軟件Media Player、Flash Player、圖像制作軟件PhotoShop等。RCP的優(yōu)點很明顯,
3、只要安裝上了軟件,就能高效地使用軟件的功能。RCP的缺點也很明顯,就是需要安裝才能使用,并且會占用大量的硬盤資源。如果某個公司的1000臺電腦都要使用Word功能,那么這1000臺電腦都要安裝Word。1.1.2 瘦客戶端程序TCP與胖客戶端程序相對的是瘦客戶端程序。瘦客戶端程序(Thin Client Program,簡稱TCP)一般表現(xiàn)為Web程序,它的特點是不需要在客戶端安裝便能使用,只要計算機能上網(wǎng)就行。瘦客戶端程序?qū)④浖δ艿闹攸c集中放到了服務器上,服務器端只需要提供服務。目前流行的概念“軟件即服務”SAAS(Software-as-a-service),就是一種非常流行的瘦客戶端應
4、用。它是通過Internet提供軟件的模式,用戶不用再購買軟件,而改用向提供商租用基于Web的軟件,來管理企業(yè)經(jīng)營活動,且無需對軟件進行維護、升級。目前,越來越多的Web 2.0概念的應用也都是瘦客戶端的應用,隨著技術的不斷進步,瘦客戶端程序的體驗也越來越豐富。Google已經(jīng)提供了許多功能強大的Web程序,例如在線Word、Excel、PDF等功能,用于取代桌面程序。相信在不久的將來,會有越來越多的TCP應用的出現(xiàn)。1.1.3 B/S與C/S結構按照是否需要訪問網(wǎng)絡,程序可分為網(wǎng)絡程序與非網(wǎng)絡程序。其中網(wǎng)絡程序又可分為B/S結構與C/S結構。C/S是指客戶端(Client)/服務器(Serv
5、er)模式。這種模式的客戶端中需要安裝一個RCP程序。RCP程序負責與服務器進行數(shù)據(jù)交換。一般的網(wǎng)絡程序都是C/S結構,例如QQ、MSN、PP Live、迅雷等、eMule等。以往基于客戶、服務器的C/S結構應用程序存在很多缺點,它需要安裝客戶端程序。當應用程序升級時,客戶端同樣需要下載升級程序才能使用新的功能。這樣無形中會給客戶端帶來一定的麻煩,限制了該應用程序的廣泛使用。當今更多的下載軟件、即時通信軟件等都是C/S結構的應用程序。B/S是指瀏覽器(Browser)/服務器(Server)模式。一般的網(wǎng)站都是B/S結構的,例如Google、Baidu。Web應用程序的訪問不需要安裝客戶端程序
6、,可以通過任一款瀏覽器(例如IE或者Firefox)來訪問各類Web應用程序。當Web應用程序進行升級時,并不需要在客戶端做任何更改。和C/S結構的應用程序相比,Web應用程序可以在網(wǎng)絡上更加廣泛地進行傳播和使用。1.2 Web開發(fā)背景知識在了解如何開發(fā)Web應用程序之前,很有必要首先了解一下這些應用程序的運行平臺和環(huán)境。下面就重點介紹Web應用程序所涉及的Web開發(fā)的背景相關知識,包括基本訪問原理,HTTP協(xié)議,Web瀏覽器以及Web服務器。1.2.1 Web訪問基本原理下面我們回想一下平時瀏覽網(wǎng)頁的過程中,瀏覽器和服務器端都發(fā)生了什么變化,網(wǎng)站是怎么實現(xiàn)請求和響應功能的。圖1.1清晰地顯示
7、了瀏覽器訪問Web服務器的整個過程。(1)用戶打開瀏覽器(如IE、Firefox等),輸入網(wǎng)站的URL地址,也就是通常所說的網(wǎng)址。這個地址告訴瀏覽器要訪問互聯(lián)網(wǎng)中的哪臺主機。圖1.1 瀏覽器訪問Web過程(2)瀏覽器尋找到指定的主機之后,向Web服務器發(fā)出請求(request)。(3)Web服務器接受請求并做出相應的處理,生成處理結果,大多數(shù)生成HTML格式,也有其他響應的格式。(4)服務器把響應的結果返回發(fā)送給瀏覽器。(5)瀏覽器接收到對應的響應結果后,在瀏覽器中顯示響應結果,比如Web頁面。1.2.2 HTTP超文本傳輸協(xié)議了解了瀏覽器與Web服務器之間的交互關系之后,再來認識一下負責瀏覽
8、器與Web服務器之間交互的橋梁:HTTP超文本傳輸協(xié)議。HTTP協(xié)議是瀏覽器和服務器之間的應用層通信協(xié)議,它是基于TCP/IP之上的協(xié)議,不僅保證正確傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪一部分內(nèi)容首先顯示(如文本先與圖形)等。在WWW中,“客戶”與“服務器”是一個相對的概念,只存在于一個特定的連接期間,即在某個連接中的客戶在另一個連接中可能作為服務器。WWW服務器運行時,一直在TCP80端口(WWW的默認端口)監(jiān)聽,等待連接的出現(xiàn)。下面介紹基于HTTP協(xié)議的客戶/服務器模式的信息交換過程,它分4個過程:建立連接、發(fā)送請求信息、發(fā)送響應信息、關閉連接。q 建立連接:連接的建立是通過
9、申請?zhí)捉幼郑⊿ocket)實現(xiàn)的??蛻舸蜷_一個套接字并把它約束在一個端口上,如果成功,就相當于建立了一個虛擬文件。以后就可以在該虛擬文件上寫數(shù)據(jù)并通過網(wǎng)絡向外傳送。q 發(fā)送請求:打開一個連接后,客戶機把請求消息送到服務器的停留端口上,完成提出請求動作。HTTP/1.0請求消息的格式為:請求消息=請求行(通用信息|請求頭|實體頭) CRLF實體內(nèi)容請求行=方法請求URLHTTP版本號CRLF方法=GET|HEAD|POST|擴展方法URL=協(xié)議名稱+宿主名+目錄與文件名請求行中的方法描述指定資源中應該執(zhí)行的動作,常用的方法有GET、HEAD和POSTq 發(fā)送響應:服務器在處理完客戶的請求之后,要
10、向客戶機發(fā)送響應消息。HTTP/1.0的響應消息格式如下:響應消息=狀態(tài)行(通用信息頭|響應頭|實體頭)CRLF實體內(nèi)容狀 態(tài) 行=HTTP版本號狀態(tài)碼原因敘述狀態(tài)碼表示響應類型1:保留;2:表示請求成功地接收;3:完成請求客戶需進一步細化請求;4:客戶錯誤;5:服務器錯誤。響應頭的信息包括:服務程序名,通知客戶請求的URL需要認證,請求的資源何時能使用。q 關閉連接:客戶和服務器雙方都可以通過關閉套接字來結束TCP/IP對話。%提示:網(wǎng)絡連接是比較底層的技術,各種Web開發(fā)技術已經(jīng)對細節(jié)進行了封裝,開發(fā)者只需要了解即可。1.2.3 Web瀏覽器目前,有很多Web瀏覽器,但是比較普及和流行的為
11、Microsoft公司的Internet Explorer(IE)和Mozilla基金會的Firefox瀏覽器。這兩個瀏覽器都能很好地支持最新、最好的HTML表示標準,以及各種HTML擴展功能。另外,它們也都能支持JavaScript腳本語言以及類似Applet的Java小程序運行。其他的瀏覽器還有傲游瀏覽器(Maxthon)、騰訊TT瀏覽器、Opera,以及Google最新推出的谷歌瀏覽器(Chrome)等。1.2.4 Web服務器在服務器端,與通信相關的處理都是由服務器軟件負責,這些服務器軟件都由第三方的軟件廠商提供,開發(fā)人員只需要把功能代碼部署在Web服務器中,客戶端就可以通過瀏覽器訪問
12、到這些功能代碼,從而實現(xiàn)向客戶提供的服務,下面簡單介紹常用的服務器。q IIS是微軟提供的一種Web服務器,提供對ASP語言的良好支持,通過插件的安裝,也可以提供對PHP語言的支持。q Apache服務器是由Apache基金組織提供的一種Web服務器,其特長是處理靜態(tài)頁面,對于靜態(tài)頁面的處理效率非常高。q Tomcat也是Apache基金組織提供的一種Web服務器,提供對JSP和Servlet的支持,通過插件的安裝,同樣可以提供對PHP語言的支持,但是Tomcat只是一個輕量級的Java Web容器,像EJB這樣的服務在Tomcat中是不能運行的。q JBoss是一個開源的重量級的Java W
13、eb服務器,在JBoss中,提供對J2EE各種規(guī)范的良好支持,而且JBoss通過了Sun公司的J2EE認證,是Sun公司認可的J2EE容器。q 另外J2EE的服務器還有BEA的Weblogic和IBM的WebSphere等,適合大型的商業(yè)應用。這些產(chǎn)品的性能都是非常優(yōu)秀的,可以提供對J2EE的良好支持。用戶可以根據(jù)自己的需要選擇合適的服務器產(chǎn)品。1.3 Web開發(fā)技術發(fā)展歷史在了解了Web應用程序的基本背景知識之后,下面將重點介紹Web應用程序的開發(fā)方法和過程,了解開發(fā)Web應用程序的各類技術,以及這些技術的發(fā)展過程和優(yōu)缺點。1.3.1 傳統(tǒng)的Web服務器模式開發(fā)傳統(tǒng)的Web應用開發(fā)僅僅能夠提
14、供有限的靜態(tài)Web頁面(HTML靜態(tài)頁面),每個Web頁面的顯示內(nèi)容是保持不變的。這種模式開發(fā)的Web應用很不利于系統(tǒng)的擴展,如果網(wǎng)站需要提供更多新的信息資料時,就只能修改以前的頁面或者重新編寫HTML頁面并提供鏈接。而且Web網(wǎng)站的信息更新周期一般都比較長(因為需要重新編寫代碼)??偨Y起來,傳統(tǒng)Web應用開發(fā)模式存在如下多個不足:q 不能提供及時信息,頁面上提供的都是靜態(tài)不變的信息。q 當需要添加新的信息時,必須重新編寫HTML文件。q 由于HTML頁面是靜態(tài)的,所以并不能根據(jù)用戶的需求提供不同的信息(包括不同的內(nèi)容和格式),并不能滿足多樣性的需求。靜態(tài)頁面的應用程序存在著這么多的缺點,決定
15、了這種模式必然不能適應大中型系統(tǒng)和商業(yè)需求。因此,很快因特網(wǎng)軟件工程師轉向了CGI(Common Gateway Interface,公共網(wǎng)關接口),系統(tǒng)能夠提供頁面的動態(tài)生成。1.3.2 動態(tài)展現(xiàn)頁面技術當發(fā)布全部為靜態(tài)頁面的Web應用程序(即傳統(tǒng)Web服務器模式開發(fā))時,隨著企業(yè)業(yè)務的增多,HTML頁面程序會越來越多,非常不利于后期代碼的維護,而且新信息發(fā)布過程非常麻煩。所以建立一個動態(tài)Web應用程序就顯得非常重要。一方面可以根據(jù)訪問者的不同請求返回不同的訪問信息,即滿足服務的多樣性;另一方面,可以直接通過后臺管理頁面發(fā)布和修改信息即可,再也不需要修改頁面程序或者添加更多頁面程序。動態(tài)We
16、b應用程序的建立,可以給客戶提供及時信息以及多樣化服務,可以根據(jù)客戶不同請求,動態(tài)地返回不同需求信息。下面將一一介紹創(chuàng)建動態(tài)頁面的方法和技術。1.3.3 CGI實現(xiàn)頁面的動態(tài)生成實現(xiàn)動態(tài)輸出的CGI程序是運行在服務器端的,根據(jù)不同客戶端請求輸出相應的HTML頁面,然后Web服務器再把這個靜態(tài)頁面返回給瀏覽器作為客戶端的響應。具體的CGI操作流程如圖1.2所示。首先用戶需要在瀏覽器地址欄輸入URL地址或者單擊鏈接來調(diào)用相應的CGI程序,例如圖1.2 CGI的操作過程%注意:CGI程序在服務器端執(zhí)行,并可以和Web服務器在同一個主機上。最流行的CGI語言是Perl和shell腳本,但是也可以使用C
17、、C+以及Java等語言進行編寫。CGI可以訪問存儲數(shù)據(jù)庫中的數(shù)據(jù)或者其他系統(tǒng)中的文件,實現(xiàn)動態(tài)生成的效果。雖然CGI實現(xiàn)了網(wǎng)站動態(tài)性,但是CGI也存在很多的不足之處:q 需要為每個請求啟動一個操作CGI程序的系統(tǒng)進程。如果請求非常頻繁,這將會帶來很大的開銷。q 需要為每個請求加載和運行一個CGI程序,這也將帶來很大的開銷。q 需要重復編寫處理網(wǎng)絡協(xié)議的代碼以及進行編碼,這些工作都是非常耗時的。前面已經(jīng)介紹過了Java語言可以用來編寫CGI程序。但遺憾的是,使用Java編寫的CGI程序執(zhí)行效率更加低下。這是因為要執(zhí)行一個Java編寫的CGI程序,除了首先需要啟動一個系統(tǒng)進程之外,還要在進程中啟
18、動一個JVM(Java Virtual Machine,Java虛擬機),然后才能在JVM中執(zhí)行Java CGI程序(讀者應該對Java程序的運行機制有所了解)。為了解決CGI所留下來的問題,Java推出了Servlet規(guī)范。在節(jié)將重點向讀者介紹Servlet的基本原理。1.3.4 Java Servlet:改進的CGI由前面討論知道,使用Java編寫的CGI程序需要為每個請求都啟動一個系統(tǒng)進程以及JVM,這大大降低了執(zhí)行效率。如果能有辦法取消這些開銷,即只需要啟動一個操作系統(tǒng)進程以及一個JVM映像,基于Java的CGI就能得到很好的改善。Servlet正是基于這樣的想法才產(chǎn)生的。另外,可知J
19、ava可以在運行的時候動態(tài)地進行加載,所以可以利用這樣的功能加載新的Java代碼來處理新的請求。這樣就可以只啟動一次服務器進程,而且只需要加載一次JVM,之后這個JVM再加載另外的類?;谶@樣的思想而出現(xiàn)的Servlet執(zhí)行效率就高得多了。和傳統(tǒng)的CGI程序相比,Servlet有如下幾個 優(yōu)點:q 只需要啟動一個操作系統(tǒng)進程以及加載一個JVM,大大降低了系統(tǒng)的開銷。q 如果多個請求需要做同樣處理的時候,這時只需要加載一個類,這也大大降低了開銷。q 所有動態(tài)加載的類可以實現(xiàn)對網(wǎng)絡協(xié)議以及請求解碼的代碼共享,大大降低了工 作量。q Servlet能夠直接和Web服務器交互,而普通的CGI程序不能。
20、Servlet還能夠在各個程序之間共享數(shù)據(jù),使得數(shù)據(jù)庫連接池之類的功能很容易實現(xiàn)。Sun公司在上世紀90年代末就發(fā)布了基于Servlet的Web服務器。為了確保加載的各個類之間不起沖突,已經(jīng)建立了一個稱為Java Servlet API(應用編程接口)的編碼標準?,F(xiàn)在基本上所有的服務器都遵循這個編碼標準,所以Servlet有很好的移植性?,F(xiàn)在的Web服務器(例如Tomcat)已經(jīng)集成了Servlet容器,Servlet容器負責管理加載、卸載、重新加載和執(zhí)行Servlet代碼等操作??聪旅嬉粋€比較典型的Servlet Java源代碼:public class HelloWorldTest ext
21、ends HttpServlet public void doTest(HttpServletRequest request,HttpServletResponse reponse) throws IOException,ServletException String msg = "登錄成功"/ 頁面內(nèi)容 response.setContentType("text/html");/ 設置ContentType類型 PrintWriter out = response.getWriter();/ 使用out向瀏覽器輸出 out.println("
22、<html>"); out.println("<head>"); out.println("<title>JSP 2.0 Test</title>"); out.println("</head>"); out.println("<body>"); out.println(msg); out.println("</body>"); out.println("</html>"
23、);從這段代碼可以看出,Servlet重復使用了PrintWriter.println()方法來輸出相應的HTML頁面,以達到動態(tài)生成HTML頁面的效果。雖然Servlet改變了傳統(tǒng)CGI程序的缺點,但是它也有不足的地方:Servlet可以建立動態(tài)生成的網(wǎng)頁,而網(wǎng)頁中可以包含從服務器端的Java對象所獲得的數(shù)據(jù)。但是Servlet生成網(wǎng)頁的方法是在Java類中嵌入HTML標簽和表達式。也就是說對HTML做一個小小的改動時,都需要修改和重新編譯Servlet源文件,然后重新部署到Servlet容器中?;蛟S設計HTML頁面和編寫Servlet代碼的人不是同一個人,這就使得修改Servlet變得非常
24、 麻煩。1.3.5 JSP:Servlet的模板Java Server Pages(JSP)是一種實現(xiàn)普通靜態(tài)HTML和動態(tài)HTML混合編碼的技術,它是Servlet API的一個擴展。由于JSP頁面在編譯成Servlet之前也是可以使用的,所以它具有了Servlet的所有優(yōu)點,包括訪問Java API。又由于JSP是嵌入到Servlet中關于應用程序的一般表達代碼,所以可以把它看成一種“徹底”的Servlet。訪問一個JSP網(wǎng)站的過程如圖1.3所示。圖1.3 JSP頁面訪問示意圖JSP技術的設計目的是使得構造基于Web的應用程序更加容易和快捷,而這些應用程序能夠與各種Web服務器、應用服務器、瀏覽器和開發(fā)工具很好地共同工作。JSP網(wǎng)頁可以非常容易地與靜態(tài)模板結合,包括HTML或XML(Extensible Markup Language,簡稱XML)片段,以及生成動態(tài)內(nèi)容的代
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025工程咨詢服務合同
- 2025物業(yè)用工合同范文
- 芷蘭秋冬傳染病防控知識
- 酒店食品安全知識培訓
- 2025年云南省文山市西疇縣初中學業(yè)水平模擬考試英語試題
- 常見惡性腫瘤概述
- 普通心理學(第2版)課件 第一章 心理學概述
- 平面構成特異8
- 2025年人際溝通與禮儀試題
- 互聯(lián)網(wǎng)+廣告投影燈行業(yè)運營模式及市場前景研究報告
- 2022年海南省自貿(mào)港政策知識競賽考試題庫(含答案)
- 做一名優(yōu)秀的少先隊員隊會課件
- 水泥混凝土面層檢查記錄表
- 醫(yī)院感染相關基礎知識
- 《湖心亭看雪》選擇題解析(內(nèi)容理解)
- 外墻真石漆施工質(zhì)量通病與預防措施
- 中央空調(diào)應急管理制度匯編
- 國外高速公路管理模式及發(fā)展趨勢
- 深圳工改工最新政策研究
- 煤礦自動化(培訓)
- 肖申克的救贖 英語三分鐘演講-文檔資料
評論
0/150
提交評論