




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第1章 Java Web開發(fā)概述在計算機發(fā)展歷史上,網(wǎng)絡(luò)的出現(xiàn)是個重要的里程碑。網(wǎng)絡(luò)在計算機技術(shù)中發(fā)揮著越來越重要的作用。如果說上個世紀(jì)是桌面程序的時代,那么本世紀(jì)無疑就是網(wǎng)絡(luò)程序的 時代。1.1 Web相關(guān)概念Web程序也就是一般所說的網(wǎng)站,由服務(wù)器、客戶端瀏覽器以及網(wǎng)絡(luò)組成。Web程序的好處是使用簡單,不需要安裝、學(xué)習(xí),有一臺電腦、一根網(wǎng)線就可以使用。截至2006年底,互聯(lián)網(wǎng)上的網(wǎng)站數(shù)量已經(jīng)超過了1億大關(guān),中國的網(wǎng)站也已經(jīng)有200萬之多了,可見網(wǎng)絡(luò)程序的影響力。但Web程序又不是一般意義上的網(wǎng)站。網(wǎng)站的目的是提供信息服務(wù),重在內(nèi)容,程序往往比較簡單。但一個商用的Web程序往往比較復(fù)雜,背后
2、結(jié)合數(shù)據(jù)庫等技術(shù),例如ERP系統(tǒng)、CRM系統(tǒng)、財務(wù)系統(tǒng)、網(wǎng)上辦公、網(wǎng)上銀行、在線業(yè)務(wù)辦理等。下面從專業(yè)上解釋一下Web程序相關(guān)的幾個概念。1.1.1 胖客戶端程序RCP桌面程序(Desktop Program)也叫胖客戶端程序(Rich Client Program,簡稱RCP)。因為桌面程序需要安裝到計算機上才能運行,并會導(dǎo)致計算機軟件的體積越來越大,因此人們形象地稱桌面程序為胖客戶端程序。計算機上安裝的任何程序都是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集中放到了服務(wù)器上,服務(wù)器端只需要提供服務(wù)。目前流行的概念“軟件即服務(wù)”SAAS(Software-as-a-service),就是一種非常流行的瘦客戶端應(yīng)
4、用。它是通過Internet提供軟件的模式,用戶不用再購買軟件,而改用向提供商租用基于Web的軟件,來管理企業(yè)經(jīng)營活動,且無需對軟件進行維護、升級。目前,越來越多的Web 2.0概念的應(yīng)用也都是瘦客戶端的應(yīng)用,隨著技術(shù)的不斷進步,瘦客戶端程序的體驗也越來越豐富。Google已經(jīng)提供了許多功能強大的Web程序,例如在線Word、Excel、PDF等功能,用于取代桌面程序。相信在不久的將來,會有越來越多的TCP應(yīng)用的出現(xiàn)。1.1.3 B/S與C/S結(jié)構(gòu)按照是否需要訪問網(wǎng)絡(luò),程序可分為網(wǎng)絡(luò)程序與非網(wǎng)絡(luò)程序。其中網(wǎng)絡(luò)程序又可分為B/S結(jié)構(gòu)與C/S結(jié)構(gòu)。C/S是指客戶端(Client)/服務(wù)器(Serv
5、er)模式。這種模式的客戶端中需要安裝一個RCP程序。RCP程序負(fù)責(zé)與服務(wù)器進行數(shù)據(jù)交換。一般的網(wǎng)絡(luò)程序都是C/S結(jié)構(gòu),例如QQ、MSN、PP Live、迅雷等、eMule等。以往基于客戶、服務(wù)器的C/S結(jié)構(gòu)應(yīng)用程序存在很多缺點,它需要安裝客戶端程序。當(dāng)應(yīng)用程序升級時,客戶端同樣需要下載升級程序才能使用新的功能。這樣無形中會給客戶端帶來一定的麻煩,限制了該應(yīng)用程序的廣泛使用。當(dāng)今更多的下載軟件、即時通信軟件等都是C/S結(jié)構(gòu)的應(yīng)用程序。B/S是指瀏覽器(Browser)/服務(wù)器(Server)模式。一般的網(wǎng)站都是B/S結(jié)構(gòu)的,例如Google、Baidu。Web應(yīng)用程序的訪問不需要安裝客戶端程序
6、,可以通過任一款瀏覽器(例如IE或者Firefox)來訪問各類Web應(yīng)用程序。當(dāng)Web應(yīng)用程序進行升級時,并不需要在客戶端做任何更改。和C/S結(jié)構(gòu)的應(yīng)用程序相比,Web應(yīng)用程序可以在網(wǎng)絡(luò)上更加廣泛地進行傳播和使用。1.2 Web開發(fā)背景知識在了解如何開發(fā)Web應(yīng)用程序之前,很有必要首先了解一下這些應(yīng)用程序的運行平臺和環(huán)境。下面就重點介紹Web應(yīng)用程序所涉及的Web開發(fā)的背景相關(guān)知識,包括基本訪問原理,HTTP協(xié)議,Web瀏覽器以及Web服務(wù)器。1.2.1 Web訪問基本原理下面我們回想一下平時瀏覽網(wǎng)頁的過程中,瀏覽器和服務(wù)器端都發(fā)生了什么變化,網(wǎng)站是怎么實現(xiàn)請求和響應(yīng)功能的。圖1.1清晰地顯示
7、了瀏覽器訪問Web服務(wù)器的整個過程。(1)用戶打開瀏覽器(如IE、Firefox等),輸入網(wǎng)站的URL地址,也就是通常所說的網(wǎng)址。這個地址告訴瀏覽器要訪問互聯(lián)網(wǎng)中的哪臺主機。圖1.1 瀏覽器訪問Web過程(2)瀏覽器尋找到指定的主機之后,向Web服務(wù)器發(fā)出請求(request)。(3)Web服務(wù)器接受請求并做出相應(yīng)的處理,生成處理結(jié)果,大多數(shù)生成HTML格式,也有其他響應(yīng)的格式。(4)服務(wù)器把響應(yīng)的結(jié)果返回發(fā)送給瀏覽器。(5)瀏覽器接收到對應(yīng)的響應(yīng)結(jié)果后,在瀏覽器中顯示響應(yīng)結(jié)果,比如Web頁面。1.2.2 HTTP超文本傳輸協(xié)議了解了瀏覽器與Web服務(wù)器之間的交互關(guān)系之后,再來認(rèn)識一下負(fù)責(zé)瀏覽
8、器與Web服務(wù)器之間交互的橋梁:HTTP超文本傳輸協(xié)議。HTTP協(xié)議是瀏覽器和服務(wù)器之間的應(yīng)用層通信協(xié)議,它是基于TCP/IP之上的協(xié)議,不僅保證正確傳輸超文本文檔,還確定傳輸文檔中的哪一部分,以及哪一部分內(nèi)容首先顯示(如文本先與圖形)等。在WWW中,“客戶”與“服務(wù)器”是一個相對的概念,只存在于一個特定的連接期間,即在某個連接中的客戶在另一個連接中可能作為服務(wù)器。WWW服務(wù)器運行時,一直在TCP80端口(WWW的默認(rèn)端口)監(jiān)聽,等待連接的出現(xiàn)。下面介紹基于HTTP協(xié)議的客戶/服務(wù)器模式的信息交換過程,它分4個過程:建立連接、發(fā)送請求信息、發(fā)送響應(yīng)信息、關(guān)閉連接。q 建立連接:連接的建立是通過
9、申請?zhí)捉幼郑⊿ocket)實現(xiàn)的??蛻舸蜷_一個套接字并把它約束在一個端口上,如果成功,就相當(dāng)于建立了一個虛擬文件。以后就可以在該虛擬文件上寫數(shù)據(jù)并通過網(wǎng)絡(luò)向外傳送。q 發(fā)送請求:打開一個連接后,客戶機把請求消息送到服務(wù)器的停留端口上,完成提出請求動作。HTTP/1.0請求消息的格式為:請求消息=請求行(通用信息|請求頭|實體頭) CRLF實體內(nèi)容請求行=方法請求URLHTTP版本號CRLF方法=GET|HEAD|POST|擴展方法URL=協(xié)議名稱+宿主名+目錄與文件名請求行中的方法描述指定資源中應(yīng)該執(zhí)行的動作,常用的方法有GET、HEAD和POSTq 發(fā)送響應(yīng):服務(wù)器在處理完客戶的請求之后,要
10、向客戶機發(fā)送響應(yīng)消息。HTTP/1.0的響應(yīng)消息格式如下:響應(yīng)消息=狀態(tài)行(通用信息頭|響應(yīng)頭|實體頭)CRLF實體內(nèi)容狀 態(tài) 行=HTTP版本號狀態(tài)碼原因敘述狀態(tài)碼表示響應(yīng)類型1:保留;2:表示請求成功地接收;3:完成請求客戶需進一步細(xì)化請求;4:客戶錯誤;5:服務(wù)器錯誤。響應(yīng)頭的信息包括:服務(wù)程序名,通知客戶請求的URL需要認(rèn)證,請求的資源何時能使用。q 關(guān)閉連接:客戶和服務(wù)器雙方都可以通過關(guān)閉套接字來結(jié)束TCP/IP對話。%提示:網(wǎng)絡(luò)連接是比較底層的技術(shù),各種Web開發(fā)技術(shù)已經(jīng)對細(xì)節(jié)進行了封裝,開發(fā)者只需要了解即可。1.2.3 Web瀏覽器目前,有很多Web瀏覽器,但是比較普及和流行的為
11、Microsoft公司的Internet Explorer(IE)和Mozilla基金會的Firefox瀏覽器。這兩個瀏覽器都能很好地支持最新、最好的HTML表示標(biāo)準(zhǔn),以及各種HTML擴展功能。另外,它們也都能支持JavaScript腳本語言以及類似Applet的Java小程序運行。其他的瀏覽器還有傲游瀏覽器(Maxthon)、騰訊TT瀏覽器、Opera,以及Google最新推出的谷歌瀏覽器(Chrome)等。1.2.4 Web服務(wù)器在服務(wù)器端,與通信相關(guān)的處理都是由服務(wù)器軟件負(fù)責(zé),這些服務(wù)器軟件都由第三方的軟件廠商提供,開發(fā)人員只需要把功能代碼部署在Web服務(wù)器中,客戶端就可以通過瀏覽器訪問
12、到這些功能代碼,從而實現(xiàn)向客戶提供的服務(wù),下面簡單介紹常用的服務(wù)器。q IIS是微軟提供的一種Web服務(wù)器,提供對ASP語言的良好支持,通過插件的安裝,也可以提供對PHP語言的支持。q Apache服務(wù)器是由Apache基金組織提供的一種Web服務(wù)器,其特長是處理靜態(tài)頁面,對于靜態(tài)頁面的處理效率非常高。q Tomcat也是Apache基金組織提供的一種Web服務(wù)器,提供對JSP和Servlet的支持,通過插件的安裝,同樣可以提供對PHP語言的支持,但是Tomcat只是一個輕量級的Java Web容器,像EJB這樣的服務(wù)在Tomcat中是不能運行的。q JBoss是一個開源的重量級的Java W
13、eb服務(wù)器,在JBoss中,提供對J2EE各種規(guī)范的良好支持,而且JBoss通過了Sun公司的J2EE認(rèn)證,是Sun公司認(rèn)可的J2EE容器。q 另外J2EE的服務(wù)器還有BEA的Weblogic和IBM的WebSphere等,適合大型的商業(yè)應(yīng)用。這些產(chǎn)品的性能都是非常優(yōu)秀的,可以提供對J2EE的良好支持。用戶可以根據(jù)自己的需要選擇合適的服務(wù)器產(chǎn)品。1.3 Web開發(fā)技術(shù)發(fā)展歷史在了解了Web應(yīng)用程序的基本背景知識之后,下面將重點介紹Web應(yīng)用程序的開發(fā)方法和過程,了解開發(fā)Web應(yīng)用程序的各類技術(shù),以及這些技術(shù)的發(fā)展過程和優(yōu)缺點。1.3.1 傳統(tǒng)的Web服務(wù)器模式開發(fā)傳統(tǒng)的Web應(yīng)用開發(fā)僅僅能夠提
14、供有限的靜態(tài)Web頁面(HTML靜態(tài)頁面),每個Web頁面的顯示內(nèi)容是保持不變的。這種模式開發(fā)的Web應(yīng)用很不利于系統(tǒng)的擴展,如果網(wǎng)站需要提供更多新的信息資料時,就只能修改以前的頁面或者重新編寫HTML頁面并提供鏈接。而且Web網(wǎng)站的信息更新周期一般都比較長(因為需要重新編寫代碼)。總結(jié)起來,傳統(tǒng)Web應(yīng)用開發(fā)模式存在如下多個不足:q 不能提供及時信息,頁面上提供的都是靜態(tài)不變的信息。q 當(dāng)需要添加新的信息時,必須重新編寫HTML文件。q 由于HTML頁面是靜態(tài)的,所以并不能根據(jù)用戶的需求提供不同的信息(包括不同的內(nèi)容和格式),并不能滿足多樣性的需求。靜態(tài)頁面的應(yīng)用程序存在著這么多的缺點,決定
15、了這種模式必然不能適應(yīng)大中型系統(tǒng)和商業(yè)需求。因此,很快因特網(wǎng)軟件工程師轉(zhuǎn)向了CGI(Common Gateway Interface,公共網(wǎng)關(guān)接口),系統(tǒng)能夠提供頁面的動態(tài)生成。1.3.2 動態(tài)展現(xiàn)頁面技術(shù)當(dāng)發(fā)布全部為靜態(tài)頁面的Web應(yīng)用程序(即傳統(tǒng)Web服務(wù)器模式開發(fā))時,隨著企業(yè)業(yè)務(wù)的增多,HTML頁面程序會越來越多,非常不利于后期代碼的維護,而且新信息發(fā)布過程非常麻煩。所以建立一個動態(tài)Web應(yīng)用程序就顯得非常重要。一方面可以根據(jù)訪問者的不同請求返回不同的訪問信息,即滿足服務(wù)的多樣性;另一方面,可以直接通過后臺管理頁面發(fā)布和修改信息即可,再也不需要修改頁面程序或者添加更多頁面程序。動態(tài)We
16、b應(yīng)用程序的建立,可以給客戶提供及時信息以及多樣化服務(wù),可以根據(jù)客戶不同請求,動態(tài)地返回不同需求信息。下面將一一介紹創(chuàng)建動態(tài)頁面的方法和技術(shù)。1.3.3 CGI實現(xiàn)頁面的動態(tài)生成實現(xiàn)動態(tài)輸出的CGI程序是運行在服務(wù)器端的,根據(jù)不同客戶端請求輸出相應(yīng)的HTML頁面,然后Web服務(wù)器再把這個靜態(tài)頁面返回給瀏覽器作為客戶端的響應(yīng)。具體的CGI操作流程如圖1.2所示。首先用戶需要在瀏覽器地址欄輸入URL地址或者單擊鏈接來調(diào)用相應(yīng)的CGI程序,例如圖1.2 CGI的操作過程%注意:CGI程序在服務(wù)器端執(zhí)行,并可以和Web服務(wù)器在同一個主機上。最流行的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 需要重復(fù)編寫處理網(wǎng)絡(luò)協(xié)議的代碼以及進行編碼,這些工作都是非常耗時的。前面已經(jīng)介紹過了Java語言可以用來編寫CGI程序。但遺憾的是,使用Java編寫的CGI程序執(zhí)行效率更加低下。這是因為要執(zhí)行一個Java編寫的CGI程序,除了首先需要啟動一個系統(tǒng)進程之外,還要在進程中啟
18、動一個JVM(Java Virtual Machine,Java虛擬機),然后才能在JVM中執(zhí)行Java CGI程序(讀者應(yīng)該對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代碼來處理新的請求。這樣就可以只啟動一次服務(wù)器進程,而且只需要加載一次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)絡(luò)協(xié)議以及請求解碼的代碼共享,大大降低了工 作量。q Servlet能夠直接和Web服務(wù)器交互,而普通的CGI程序不能。
20、Servlet還能夠在各個程序之間共享數(shù)據(jù),使得數(shù)據(jù)庫連接池之類的功能很容易實現(xiàn)。Sun公司在上世紀(jì)90年代末就發(fā)布了基于Servlet的Web服務(wù)器。為了確保加載的各個類之間不起沖突,已經(jīng)建立了一個稱為Java Servlet API(應(yīng)用編程接口)的編碼標(biāo)準(zhǔn)?,F(xiàn)在基本上所有的服務(wù)器都遵循這個編碼標(biāo)準(zhǔn),所以Servlet有很好的移植性?,F(xiàn)在的Web服務(wù)器(例如Tomcat)已經(jīng)集成了Servlet容器,Servlet容器負(fù)責(zé)管理加載、卸載、重新加載和執(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");/ 設(shè)置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重復(fù)使用了PrintWriter.println()方法來輸出相應(yīng)的HTML頁面,以達到動態(tài)生成HTML頁面的效果。雖然Servlet改變了傳統(tǒng)CGI程序的缺點,但是它也有不足的地方:Servlet可以建立動態(tài)生成的網(wǎng)頁,而網(wǎng)頁中可以包含從服務(wù)器端的Java對象所獲得的數(shù)據(jù)。但是Servlet生成網(wǎng)頁的方法是在Java類中嵌入HTML標(biāo)簽和表達式。也就是說對HTML做一個小小的改動時,都需要修改和重新編譯Servlet源文件,然后重新部署到Servlet容器中。或許設(shè)計HTML頁面和編寫Servlet代碼的人不是同一個人,這就使得修改Servlet變得非常
24、 麻煩。1.3.5 JSP:Servlet的模板Java Server Pages(JSP)是一種實現(xiàn)普通靜態(tài)HTML和動態(tài)HTML混合編碼的技術(shù),它是Servlet API的一個擴展。由于JSP頁面在編譯成Servlet之前也是可以使用的,所以它具有了Servlet的所有優(yōu)點,包括訪問Java API。又由于JSP是嵌入到Servlet中關(guān)于應(yīng)用程序的一般表達代碼,所以可以把它看成一種“徹底”的Servlet。訪問一個JSP網(wǎng)站的過程如圖1.3所示。圖1.3 JSP頁面訪問示意圖JSP技術(shù)的設(shè)計目的是使得構(gòu)造基于Web的應(yīng)用程序更加容易和快捷,而這些應(yīng)用程序能夠與各種Web服務(wù)器、應(yīng)用服務(wù)器、瀏覽器和開發(fā)工具很好地共同工作。JSP網(wǎng)頁可以非常容易地與靜態(tài)模板結(jié)合,包括HTML或XML(Extensible Markup Language,簡稱XML)片段,以及生成動態(tài)內(nèi)容的代
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 藥庫設(shè)備維護管理制度
- 藥店獎罰規(guī)章管理制度
- 藥店設(shè)備投放管理制度
- 營林防火安全管理制度
- 設(shè)備公司營銷管理制度
- 設(shè)備安全細(xì)節(jié)管理制度
- 設(shè)備現(xiàn)場施工管理制度
- 設(shè)施權(quán)屬清冊管理制度
- 設(shè)計單位員工管理制度
- 詐騙公司經(jīng)營管理制度
- 徐圩港區(qū)疏港航道整治工程報告書
- XX公司事故隱患內(nèi)部報告獎勵制度1
- 兒童重癥肺炎護理常規(guī)
- 裝飾裝修施工方案
- 骨科手術(shù)切口感染的預(yù)防與控制
- 企業(yè)會計面試題及答案
- 影視制作基地裝修施工合同
- 河北省唐山市重點達標(biāo)名校2025屆中考聯(lián)考生物試卷含解析
- 2025年廣西職業(yè)院校技能大賽高職組(中藥傳統(tǒng)技能賽項)參考試題庫及答案
- 電動車售后維修流程與服務(wù)質(zhì)量提升
- 漂發(fā)染發(fā)知識培訓(xùn)課件
評論
0/150
提交評論