999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

B/S架構下Web數據提交與獲取原理分析

2022-04-26 05:28:24田蘭梅
西部廣播電視 2022年4期

杜 限 田蘭梅

(作者單位:四川省廣播電視科學技術研究所)

1 B/S和C/S架構概述

B/S(Browser/Server)架構即瀏覽器/服務器架構,與之對應的是C/S(Client/Server)架構即客戶端/服務器架構。兩者的主要區別在于B/S架構無須安裝專用的軟件客戶端,只要有支持HTML語言的瀏覽器就可以使用;C/S架構的系統使用時,需要單獨開發客戶端軟件,此客戶端軟件還需要針對不同種類的操作系統進行不同版本的定制和開發。兩者的優缺點主要如下:B/S架構Web服務器對客戶端功能的一些改變,不用客戶端瀏覽器再單獨進行下載更新或者升級,僅僅只用在瀏覽器更新緩存刷新網頁即可,操作簡便。缺點是受網絡限制,客戶端只能在瀏覽器上使用,安全性也比C/S架構低;C/S架構必須客戶端先安裝好之后才能投入使用,更新軟件的時候,客戶端也必須重新下載一次進行更新,維護和升級的成本過高,如果進行一次維護升級,那么所有的客戶端程序都必須進行改變,所花費的時間很長,但比較安全,可以將復雜的計算存儲在本地[1]。兩種架構之間的主要區別如圖1、圖2所示。

圖1 B/S系統架構

圖2 C/S系統架構

當今服務器客戶端軟件升級更新換代非常迅速和頻繁,如果每一次升級或者補丁用戶都需要重新安裝自己的客戶端程序,就會非常不方便。可見,C/S這種網絡服務器客戶端的架構已經不太適應現在的發展模式。而B/S架構下的瀏覽器網絡架構則比C/S網絡架構更加具有快速響應軟件更新升級的潛力。因此,下面將通過分析在B/S架構下,瀏覽器向服務器端提交HTTP請求數據及瀏覽器向服務器端請求接收數據的邏輯流程等問題進行一系列的分析說明。

2 常見的Web數據提交方法

2.1 Form表單提交

2.1.1 Form表單的一般形式

Form表單一般指為HTML語言中提交用戶數據而創建的

標簽元素[2]。

表單的輸入元素可以有Text、select、checkbox、button等。

表單還可以包含option、fieldset、密碼域和上傳域等元素。

表單將表單內數據提交上傳至Web服務器,獲取Web服務器的內容并形成瀏覽器表單。

Form表單有以下附加屬性:

action URL:表單發送信息的地址,可以為內部網址,可以為服務器目錄地址,也可以為外部網址。

accept-charset:處理提交的表單使用何種字符集。

autocomplete on、off:是否打開表單的自動填寫功能。

enctype :表單的編碼格式。(如果需要傳輸文件,不能使用默認設置。)

method get、post:發送表單數據HTTP的請求方法等。

其中action屬性及method屬性為數據提交傳輸的重點屬性,action中的URL地址就是服務器端接收form的地址,method通俗講,即為兩種HTTP傳輸數據的方法,分別為post和get[3]。

以下代碼為表單post提交示例:

2.1.2 Form模式下數據傳輸原理

Form表單提交模式下action屬性即為數據向后臺提交的地址,此地址可以為一個公網或者內網網址,即form action=http://currentPage.xxx(公網網址)或form action=http://localhost:8080/user(內網網址);也可以為服務器內部的具體地址,即form action="/goods/selGoods"。在這3個地址里,可通過前臺和后臺程序改寫某一個具體的文本文件或其他文件內容。如果表單提交是查詢或者搜索,并且內容不含保密數據,可以使用GET,因為使用GET時,表單提交的數據在URL中是明文;如果表單內容是需要保密的數據,那么就需要使用POST,因為POST提交的數據在URL是不可見的。

2.2 Ajax方式提交

2.2.1 Ajax意義

Ajax即Asynchronous JavaScript and XML的縮寫(中文意思為異步的JavaScript和XML)。Ajax并不是編程語言,而是一種網頁交互數據和更新顯示的方法,不需要重新加載整個網頁就可以與服務器交換數據并更新部分網頁的內容。使用表單模式提交數據后需要刷新整個網頁,而使用Ajax向服務器提交數據后不需要刷新網頁,網頁的特定部分內容就可以更新。

2.2.2 Ajax提交數據方法

Ajax主要通過使用JavaScript操作文檔對象模型(Document Object Model,DOM)來執行;使用XSLT和XML操作數據;使用XMLHttpRequest對象或Fetch API與網頁服務器進行異步數據交換。Ajax工作原理如圖3所示:

圖3 Ajax工作原理

Ajax主要是聯合使用XMLHttpRequest 對象、JavaScript/DOM、CSS、XML四者分別得到與服務器異步的交換數據[4];通過信息顯示/交互、數據定義樣式等方式作為交換數據的格式來實現異步的數據與服務器的交換。

Ajax核 心:XMLHttpRequestXMLHttpRequest對象是Ajax中最重要的一個對象[5]。XMLHttpRequest傳統的Web前后臺的數據傳輸原理為,瀏覽器直接訪問服務器的Web后臺服務程序來獲取數據。Web后臺服務程序通過轉發把數據發送給瀏覽器。當我們使用Ajax之后,瀏覽器會先把HTTP請求發送到XMLHttpRequest對象之中,XMLHttpRequest對象對HTTP請求進行封裝,然后再發送給Web服務器。Web服務器的應答方式不是轉發而是以流的方式把數據回傳給瀏覽器XMLHttpRequest異步對象,并且XMLHttpRequest對象會不斷監聽服務器狀態的變化,將得到服務器返回的數據寫到瀏覽器指定位置上。因為不是轉發的方式,所以不刷新就能夠獲取服務器端的數據。

創建獲取Ajax對象的方法及發送接收數據的方法:

判斷服務器是否成功響應if(ajax.status==200){//說明服務器的響應是正確的

var time=ajax.responseText;

//要將這個數據直接賦值給一個一個標簽

Get方法數據傳輸(放到URL后面)ajax.open("GET","${pageContext.request.contextPath}/dates.acti on?userName=qianyu&password=123");

Post方式發送數據或獲得數據,設置ajax請求的方法:

ajax.setRequestHeader("Content-type","application/x-www-form-urlencoded");

//發送數據

ajax.send("userName=qianyu&password=123");

以上即為完整的創建獲取Ajax對象的方法以及發送接收數據方法,其主要核心即為XMLHttpRequestXMLHttpRequest對象。

2.2.3 Ajax請求和Form表單的區別

Ajax在提交或者接收服務器端數據時是異步進行的,原網頁不需要整體刷新;

Form在提交或者接收服務器端數據時是同步進行的,原網頁需要整體刷新;

Ajax在提交時,是保留本網頁,然后直接向Web服務器后臺程序新建一個請求;

Form需要刷新原網頁,而后再請求;

Ajax必須要使用JavaScript實現,必須使用支持JavaScript的瀏覽器;

Form是所有瀏覽器都能夠支持的,不需要支持JavaScript;

Ajax在請求、提交、接收時,需要特殊的服務器后臺程序對數據進行處理;

Form提交時,不需要專用的服務器后臺程序;

2.2.4 Ajax模式下數據傳輸原理

基于原生JS實現Ajax

創建一個Ajax對象

let xhr=new XMLHttpRequest();

//不兼容IE6及更低版本瀏覽器 (用 IE6:ActiveXObject)

打開請求地址(可以理解為一些基礎配置,但是并沒有發送請求)

xhr.open([method],[url],[async],[username],[user password]) (后邊兩參數一般不用)

//監視Ajax狀態,及時得到響應信息(得到響應頭、主體信息)

GET和POST任意一種請求方式,B/S瀏覽器都可以把信息發送給服務器端[6],服務器端也可以把瀏覽器請求信息返還給瀏覽器,但是采用GET模式的話一般以獲得信息為主,采用POST模式一般以向服務器發送信息為主。比如,瀏覽器端需要獲取一些動態展示的圖片、文字、音頻,一般采用GET請求告訴服務器端我們想要什么,服務器端就會把我們想要的數據返回;在實現在線用戶注冊功能的時候,需要把用戶輸入的注冊加密信息發送給服務器,這時候我們一般使用POST請求。

GET請求和POST請求,在項目實戰中存在很多區別:

GET請求傳輸數據比POST請求更少:GET請求傳遞給服務器內容保存在URL地址參數后面,POST請求是在HTTP的body體里面,而URL地址是有長度限制的,超過的部分,瀏覽器會自動刪除。

GET請求會出現緩存:因為使用URL傳遞數據,數據會被客戶端瀏覽器緩存,這個是無法控制的。用GET傳遞數據時要防止瀏覽器從緩存中讀取數據。

3 結語

B/S架構下無論是Form表格提交還是Ajax數據提交,其本質都是將對服務器端的TCP請求先轉化為HTTP請求報文,并發送給服務器的Web服務器程序處理,即所有對服務器發送和接收的數據都先封裝為HTTP幀進行通信,然后Web服務器再和服務器數據庫進行通信(對比C/S架構則為客戶端程序直接與服務器數據庫進行通信)。HTTP請求報文幀格式如圖4所示:

圖4 HTTP請求報文幀格式

一個POST或者GET請求無論是Form表格提出或是Ajax提出的都可以形成如下類似HTTP請求報文:

即瀏覽器端需要獲取服務器中123.txt文檔的內容,服務器將會回復HTTP響應報文,并將123.txt中的內容傳輸至發送請求報文的瀏覽器中,即為整個完整的B/S數據請求傳輸過程。HTTP定義的多種請求方法中有GET、POST、HEAD、PUT等,其中GET和POST方法即為和Html Form表格和Ajax的GET、POST相對應的方法。

主站蜘蛛池模板: 婷婷午夜影院| 婷婷亚洲视频| 国产福利在线免费| 97影院午夜在线观看视频| 麻豆国产在线观看一区二区| 四虎国产在线观看| 欧美在线网| 白丝美女办公室高潮喷水视频| 亚洲av无码人妻| 久热中文字幕在线观看| 国产尤物在线播放| 国产福利大秀91| 亚洲成人一区二区三区| 免费观看三级毛片| 97国产精品视频自在拍| 热伊人99re久久精品最新地| 欧美精品色视频| 日韩在线中文| 国内精品免费| 国产99欧美精品久久精品久久 | 国产成+人+综合+亚洲欧美| 亚洲中文字幕在线一区播放| 国产日韩欧美在线播放| 欧美日韩成人| 亚洲中文字幕无码爆乳| 国产美女无遮挡免费视频| 日韩成人在线网站| 亚洲国产日韩欧美在线| 一级毛片在线播放| 露脸国产精品自产在线播| AⅤ色综合久久天堂AV色综合| 国产白丝av| 成人在线不卡视频| 国产成人精彩在线视频50| 色综合手机在线| 中文字幕亚洲无线码一区女同| 91精品啪在线观看国产91九色| 黄色a一级视频| 丁香六月激情综合| A级毛片无码久久精品免费| 国产一区二区网站| 久久综合九色综合97网| 日本人妻丰满熟妇区| 激情综合激情| 思思热在线视频精品| 91在线中文| 亚洲综合色婷婷| 欧美日韩资源| 亚洲av色吊丝无码| 国产视频 第一页| 国产电话自拍伊人| 色综合激情网| 呦女亚洲一区精品| 亚洲欧美成人综合| 国外欧美一区另类中文字幕| 中美日韩在线网免费毛片视频| 四虎免费视频网站| 欧美成一级| 婷五月综合| 不卡无码h在线观看| 婷婷午夜影院| 亚洲水蜜桃久久综合网站| 最新国产你懂的在线网址| a级毛片免费网站| 亚洲午夜国产精品无卡| 中国丰满人妻无码束缚啪啪| 高清国产va日韩亚洲免费午夜电影| 亚洲h视频在线| 亚洲最新在线| 亚洲天堂视频网| 亚洲天堂精品在线观看| 亚洲久悠悠色悠在线播放| 国产成年女人特黄特色大片免费| 99久久精品国产综合婷婷| 九色综合伊人久久富二代| 久久久精品无码一二三区| 国产chinese男男gay视频网| 国产91丝袜在线播放动漫| 国产麻豆福利av在线播放 | 香蕉国产精品视频| 狠狠亚洲婷婷综合色香| 欧美在线观看不卡|