


版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、Web應用開發基本原理Web應用原理簡介Web應用是基于HTTP協議的,Web應用也被常常被稱為B/S(Browser/Server,瀏覽器/服務器)應用,這是針對傳統的C/S(Client/Server,客戶端/服務器模式)模式而言的。但是Web應用其實也是一種客戶端/服務器的應用,只不過客戶端使用的是統一協議的瀏覽器而已。傳統的C/S結構是兩層結構,客戶端直接和數據庫連接,這種模式存在著非常大的安全隱患,目前已經逐步消亡了。但是作為3層結構(UI-BizServerDB)的結構會長期和B/S結構共存。優點缺點B/S具有分布性特點,可以隨時隨地進行業務處理。業務擴展簡單方便,通過增加網頁即可
2、增加服務器功能。維護簡單方便,只需要改變網頁,即可實現所有用戶的同步更新。開發簡單,共享性強。個性化特點明顯降低,無法實現具有個性化的設計要求。操作的習慣性是以鼠標為最基本的操作方式,無法滿足快速操作的要求。貞面動態刷新,響應速度明顯降低。專用性打印輸出難以實現,尤其對票據等打印,難以實現套打輸出。無法實現分頁顯示,給數據庫訪問造成較大的壓力。功能弱化,難以實現傳統模式下的特殊功能要求。界面組件擴展性差C/S客戶端實現與服務器的直接相連,沒有中間環節,因此響應速度快。客戶操作界面設計靈活,容易滿足客戶自身的個性化要求。界面組件豐富客戶端實現與服務器常常是以長連接相連的,因此會降低并發數。由于是
3、針對性開發,因此缺少通用性的特點,業務變更或改變不夠靈活,需要重新設計和開發,增加了維護和管理的難度,進一步的業務拓展困難較多。需要專門的客戶端安裝程序,分布功能弱,不能夠實現快速部署安裝和配置。兼容性差,對于不同的開發工具,相互之間很難兼容,具有較大的局限性。若采用不問工具,需要重新改寫程序。開發成本較高,需要具有一定專業水準的技術人員才能完成。Web基本交互圖c/s模式的交互模型客戶端將數據傳輸給服務器服務器將數據傳遞給客戶端Web交互的基本模型:瀏覽器將數據傳輸給服務器服務器將顯示和操作代碼傳遞給瀏覽器瀏覽器的作用數據收集傳輸協議解釋顯示語言/解釋腳本響應用戶操作Web傳輸協議網絡堆棧客
4、戶端客戶端客戶端客戶端服務器對于Web開發主要是使用Web應用層和HTTP層的協議進行開發的,Web應用層具有多種協議:HTML:顯示語言,使用統一的MarkerLanguage解釋客戶端顯示組件以及其擺放規則。DHTML:HTML的對象模型,主要和腳本引擎一起提供頁面操作/動態頁面顯示等功能。CSS:界面風格描述,主要用于描述組件的特性。Javascript/VBScript:腳本引擎主要用于結合DHTML提供頁面操作/動態頁面顯示等功VML:圖形化建模語言。在除了物理層的以下各層,Web服務器一般都能為應用服務提供相應的接口:輸入:鏈路層:MAC地址IP層:IP地址TCP層:TCP端口HT
5、TP層:HTTPHeaders(QueryString/Cookie/Accept-Type/Content-Type等)Web應用層:ViewState/Form服務器端組件狀態等輸出:HTTP層:HTTPHeaders(QueryString/Cookie/Accept-Type/Content-Type等)Web應用層:HTML/Javascript/HTC/xml/pic等HTTP協議Http協議格式URL格式<protocol>:/<domain><virtualpath>?<queryString>,主要由幾部分構成:1. proto
6、col在這里的協議是HTTPdomain一般的格式是<服務器>:<端口號>,如果沒有端口號,HTTP缺省為80virtualpath虛擬路徑,第一個字符是”/”,代表相對于服務器Web應用根的路徑。2. queryString參數值,以<名>:<值模式的多個域的組合,域和域之間以”&”分割。注意:這里的每個域的名稱在QueryString中可能不是唯一的。HTTP頭主要是指<名>:<值>模式的多個域的組合,域和域之間以回車(rn)分割,如果出現兩個回車,就證明HTTP頭已經結束。注意:HTTP域在HTTP頭中不是唯一的。
7、Form提交格式以<名>:<值>模式的多個域的組合,域和域之間以”&”分割。注意:這里的每個域的名稱在QueryString中可能不是唯一的。請求(Request)<method><url>HTTP/<version><http頭><content>method:主要有兩種,一種是POST,一種是GET。通常POST會帶Content-Length的HTTP頭,用來傳輸數據。url:訪問服務器的虛擬路徑,比如我們在瀏覽器中輸入"http:/localhost/webapp/webapp1.as
8、px"那么虛擬路徑是指"/webapp/webapp1.aspx”。version:當前HTTP協議是1.1版本content:如果HTTP頭中存在Content-Length,則在content部分就會有對應長度的(字節為單位)內容。回應(Response)HTTP/<version><statusCode><statusDescription><http頭><content>version:當前HTTP協議是1.1版本statusCode:服務器傳回的訪問的整數狀態碼,一般成功的是200或者201,跳轉是302
9、,服務器內部錯誤是500,請求錯誤是400,沒有頁面是404statusDescription:狀態描述,針對狀態碼的描述信息content:和請求是一樣的特殊的HTTP頭Content-Length放在HTTP頭后的內容長度Content-Type放在HTTP頭后的內容類型以及字符集編碼,常見內容類型有POST的類型一般是"application/x-www-form-urlencoded”XML類型的數據使用”text/xml”HTML類型的數據使用”text/html”javascript類型的數據使用"text/javascript”Content-Encoding
10、編碼規則,用于表明Set-Cookie服務器傳遞的,專門用于設定瀏覽器cookie的(可以設定Cookie的名值對,有效路徑,以及是否強制使用安全通道等)Cookie瀏覽器傳遞的,將服務器設定的cookie返回給服務器例子用戶在瀏覽器輸入URL,訪問該URL輸入路徑傳輸報文傳輸報文用戶在瀏覽器中輸入內容,點擊”提交”按鈕,提交內容HTML內容傳輸報文傳輸報文Web應用服務器傳統的Web應用服務器僅僅是一個HTTP協議處理器,框架提供了基本的HTTP模型,包括QueryString/Form/HTTP頭/Cookie/Session等,而ASP/JSP僅僅多了動態生成接口的方法(ASP是解釋執行
11、的)。以下我們將介紹基本對象模型Request客戶端請求對象,一般最重要的屬性/方法有:QueryString獲取請求的QueryString,一般的都會將名值對做成Hashtable。但是由于QueryString的域名稱不是唯一的,因此Hashtable中記錄的實際上是Array。在.NET當中,使用缺省的Form獲取請求中Content(使用POST)的內容,一般的都會將名值對做成Hashtable。但是由于Form的域名稱不是唯一的,因此Hashtable中記錄的實際上是ArrayParams是將QueryString和Form合成一塊。Header獲取請求的HTTP頭,一般的都會將名
12、值對做成Hashtableo但是由于HTTP域名稱不是唯一的,因此Hashtable中記錄的實際上是ArrayContent-Type內容類型以及內容編碼。RequestStream將Content作為流來操作。Response服務器應答對象,一般最重要的屬性/方式有:Header設定響應的HTTP頭Content-Type內容類型以及內容編碼。Write將數據寫在輸出的Buffer中,該輸出Buffer以后將直接寫在HTTP相應的Content部分。在傳統的Web服務器中,可以支持Web網頁的HTML和服務器腳本嵌套,實際上在該服務器頁面編譯之后,其結果就是Response.Write方法。
13、例子:服務器腳本<html><%=1%></html>服務器代碼生成后的程序Response.Write(<html>");Response.Write(1);Response.Write(</html>");SessionSession主要作用是用于紀錄會話的狀態,其實質是服務端是一個記錄名值對的Hashtable,其還有一個全局唯一標示的SessionID。服務器將這個Session保留在SessionTable中(SessionID和Session對的Hashtable)。在傳輸的時候服務器會將Session
14、ID通過Cookie的方式傳遞給客戶端,因此在客戶端也可以看作服務器對象指針。執行過程如下:服務器制作Session,并將Session放在SessionTable(Hashtable)中,然后將SessionID打包到Cookie中傳遞給瀏覽器。如果服務器要記錄狀態,則利用這個Session對象將狀態名和狀態值記錄起來。瀏覽器在瀏覽服務器的其他網頁的時候將Cookie傳遞回服務器服務器如果需要找到當前會話的某個狀態值,則將Cookie解開拿到SessionlD,并在SessionTable中找到Session,然后在Session中通過狀態名獲取該狀態值。般的SessionTable添加/找
15、到Session的步驟,是由框架做的。ApplicationApplication變量的主要目的在于紀錄全局的狀態,也是一個名值對的HashtableHTML/DHTML和HTTP的接口HTML/DHTML和HTTP的接口其實是單向接口說明執行方式打包方式Form/Input兒素form.submit方法Form在提交的時候(執行form.submit或者點擊submit類型的input按鈕的時候)會把Form提交到HIIP接口中去。Form提首先收集該Form內所有的(包括子Form)的input兒素的value值(如果多個submit,則選擇點擊的那個),然后打包。*點擊或者腳本執行按照m
16、ethod指定的方法,缺省是POSTA廿的href屬性用戶點擊該超連后,貝面路由到該href指定的頁面當中。點擊GETsrc屬性/behavior的url屬性/import的implementation屬性在瀏覽器獲得回應生成頁面時候,會自動打包申請HTML語言自動執行GETdocument.location=腳本執行GETwindow方法集合opennavigateshowModalDialogshowModalessDialog腳本執行GET*form提交的偽碼functionform_submit()收集所有form內部的tag為input的元素varelms=event.srcElement.form.all.tags("input");varpostString="”;for(vari=0;
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 遼寧省部分重點中學協作體2025年4月高考模擬考試英語試題(含答案無聽力原文及音頻)
- 吉林省松原市前郭縣2024~2025學年度下學期東北三省精準教學2025年4月高三聯考 語文 強化卷(含答題卡、答案及解析)
- 鐵路旅客運輸投訴處理課件
- 鐵路工程安全技術石家莊鐵路16課件
- 2025年特種設備作業人員氣瓶充裝P證考試題庫
- 中國交響樂賞析課件
- 大學生職業規劃大賽《服裝設計與工程專業》生涯發展展示
- 醫療器械租賃合同示范文本
- 企業運營項目管理咨詢服務合同
- 產品代購合同協議書
- (完整版)【鋼琴譜】大魚鋼琴譜
- 個人車位轉讓協議:免修版模板范本
- 酒廠從業人員【安全教育培訓】課件
- 《三國演義》之劉備有感
- 北京路沂河橋及兩岸立交改造工程橋梁頂升專項施工方案
- 某地塊土壤污染狀況調查匯報PPT模板框架
- 睪丸附睪炎護理
- 居家養老服務規范:服務滿意度測評
- 拉動式生產方案-課件
- 名著導讀 西游記
- 沃爾沃攤鋪機操作面板
評論
0/150
提交評論