就是JavaWeb(零)——JavaWeb概述

1.Web概述

什么是web?

web在計(jì)算機(jī)網(wǎng)頁(yè)開(kāi)發(fā)中就是網(wǎng)頁(yè)的意思,網(wǎng)頁(yè)是網(wǎng)站中的一個(gè)頁(yè)面。通常我們?yōu)g覽網(wǎng)頁(yè)時(shí),看到的都是
一個(gè)一個(gè)的html格式的web頁(yè)面,網(wǎng)頁(yè)可以展示文字,圖片,媒體等內(nèi)容,而這些都是需要通過(guò)瀏覽器來(lái)
閱讀的。

Web應(yīng)用程序的工作原理?

Web應(yīng)用程序大體可以分為兩種,靜態(tài)網(wǎng)站和動(dòng)態(tài)網(wǎng)站。
早期的Web應(yīng)用主要是靜態(tài)頁(yè)面的瀏覽,即靜態(tài)網(wǎng)站。這些網(wǎng)站使用HTML描寫(xiě),通常來(lái)說(shuō)隨著html代碼的
生成,頁(yè)面的內(nèi)容和顯示效果就基本上不會(huì)發(fā)生變化了——除非你修改頁(yè)面代碼。這些代碼放在Web服務(wù)器上,用戶(hù)使用瀏覽器通過(guò)HTTP協(xié)議請(qǐng)求服務(wù)器上的Web頁(yè)面,服務(wù)器上的Web服務(wù)
器接受到用戶(hù)的請(qǐng)求處理后,再發(fā)送給客戶(hù)端瀏覽器,顯示給用戶(hù)。整個(gè)過(guò)程就像下圖:

過(guò)程

而動(dòng)態(tài)網(wǎng)頁(yè)則不然,頁(yè)面代碼雖然沒(méi)有變,但是顯示的內(nèi)容卻是可以隨著時(shí)間、環(huán)境或者數(shù)據(jù)庫(kù)操作的結(jié)果而發(fā)生改變的。這些網(wǎng)站通常使用HTML和動(dòng)態(tài)腳本語(yǔ)言(入JSP、ASP或者是PHP等)編寫(xiě),并將編寫(xiě)后的程序部署到Web服務(wù)器上,由Web服務(wù)器對(duì)動(dòng)態(tài)腳本代碼進(jìn)行處理,并轉(zhuǎn)化成瀏覽器可以解析的HTML代碼,返回給客戶(hù)端瀏覽器,顯示給用戶(hù)。

值得一提的是:動(dòng)態(tài)網(wǎng)頁(yè)并非是那些帶有動(dòng)畫(huà)效果的網(wǎng)頁(yè),而是指具有交互性、內(nèi)容可以自動(dòng)更新,并且內(nèi)容會(huì)根據(jù)訪問(wèn)的時(shí)間和訪問(wèn)者而改變的網(wǎng)頁(yè)。這里所說(shuō)的交互性是指網(wǎng)頁(yè)可以根據(jù)用戶(hù)的要求動(dòng)態(tài)改變或響應(yīng)。由此可見(jiàn),靜態(tài)網(wǎng)頁(yè)就像是老式的手機(jī),只能使用系統(tǒng)自帶的鈴聲和功能,而動(dòng)態(tài)網(wǎng)頁(yè)就像是現(xiàn)代的手機(jī),可以自行添加/刪除或者說(shuō)更改鈴聲和其他一些設(shè)置。


HTTP

2,Web的發(fā)展歷程

自從1989年由Tim Berners-Lee(蒂姆.伯納斯.李)發(fā)明了World Wide Web以來(lái),Web主要經(jīng)歷了3個(gè)階段,分別是靜態(tài)文檔階段(指代Web 1.0)、動(dòng)態(tài)網(wǎng)頁(yè)階段(指代Web1.5)和Web2.0階段。

① 靜態(tài)文檔階段

處理靜態(tài)文檔階段的 Web ,主要是用于靜態(tài) Web 頁(yè)面的瀏覽。用戶(hù)通過(guò)客戶(hù)端的 Web 瀏覽器可以訪問(wèn) Internet 上各個(gè) Web 站點(diǎn)。在每個(gè) Web 站點(diǎn)上,保存著提前編寫(xiě)好的 HTML 格式的 Web 頁(yè),以及各 Web 頁(yè)之間可以實(shí)現(xiàn)跳轉(zhuǎn)的超文本鏈接。
通常情況下,這些 Web 頁(yè)都是通過(guò) HTML 語(yǔ)言編寫(xiě)的。由于受低版本 HTML 語(yǔ)言和舊式瀏覽器的制約,Web 頁(yè)面只能包括單純的文本內(nèi)容,瀏覽器頁(yè)只能顯示呆板的文字信息,不過(guò)這已經(jīng)基本滿(mǎn)足了建立 Web 站點(diǎn)的初衷,實(shí)現(xiàn)了信息資源共享。

隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展以及網(wǎng)上信息呈幾何倍數(shù)的增長(zhǎng),人們逐漸發(fā)現(xiàn)手工編寫(xiě)包含所有信息和內(nèi)容的頁(yè)面,對(duì)人力和物理都是一種極大的浪費(fèi),而且?guī)缀踝兊秒y以實(shí)現(xiàn)。另外,這樣的頁(yè)面也無(wú)法實(shí)現(xiàn)各種動(dòng)態(tài)的交互功能。這就促使了 Web 技術(shù)進(jìn)入了發(fā)展的第二階段——動(dòng)態(tài)網(wǎng)頁(yè)階段

② 動(dòng)態(tài)網(wǎng)頁(yè)階段

為了克服靜態(tài)頁(yè)面的不足,人們將傳統(tǒng)單機(jī)環(huán)境下的編程技術(shù)與 Web 技術(shù)相結(jié)合,從而形成新的網(wǎng)絡(luò)編程技術(shù)。網(wǎng)絡(luò)編程技術(shù)通過(guò)在傳統(tǒng)的靜態(tài)網(wǎng)頁(yè)中加入各種程序和邏輯控制,從而實(shí)現(xiàn)動(dòng)態(tài)和個(gè)性化的交流與互動(dòng)。我們將這種使用網(wǎng)絡(luò)編程技術(shù)創(chuàng)建的頁(yè)面稱(chēng)為動(dòng)態(tài)頁(yè)面。動(dòng)態(tài)頁(yè)面的后綴通常是.jsp、.php、和.asp等,而靜態(tài)頁(yè)面的后綴通常是.htm、.html和.shtml等。

③ Web 2.0 階段

隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,又提出了一種新的互聯(lián)網(wǎng)模式——Web 2.0。這種模式更加以用戶(hù)為中心,通過(guò)網(wǎng)絡(luò)應(yīng)用( Web Applications )促進(jìn)網(wǎng)絡(luò)上人與人間的信息交換和協(xié)同合作。
Web 2.0 技術(shù)主要包括:博客( BLOG )、微博( Twitter )、維基百科全書(shū)( Wiki )、即時(shí)信息( IM )等。

系統(tǒng)架構(gòu)

3.網(wǎng)絡(luò)程序開(kāi)發(fā)的體系結(jié)構(gòu)

隨著web2.0時(shí)代的到來(lái),互聯(lián)網(wǎng)的網(wǎng)絡(luò)架構(gòu)已從傳統(tǒng)的C/S架構(gòu)轉(zhuǎn)變?yōu)楦臃奖恪⒖旖莸腂/S架構(gòu),B/S架構(gòu)大大簡(jiǎn)化了使用網(wǎng)絡(luò)應(yīng)用的難度,這種人人都能上網(wǎng)、人人都能使用網(wǎng)絡(luò)上提供的服務(wù)的方法也進(jìn)一步推到了網(wǎng)絡(luò)的繁榮。

可以通過(guò)一個(gè)例子來(lái)理解C/S和B/S。
C/S比如就是一些桌面應(yīng)用,例如qq這種運(yùn)行在桌面的程序,服務(wù)端主要就是一個(gè)數(shù)據(jù)庫(kù),把所有業(yè)務(wù)邏輯以及界面的渲染操作都交給客戶(hù)端去完成。
而B(niǎo)/S對(duì)應(yīng)的就是我們的瀏覽器,把業(yè)務(wù)邏輯交給服務(wù)端完成,客戶(hù)端僅僅只用來(lái)渲染界面和數(shù)據(jù)交換。

B/S架構(gòu)帶來(lái)了以下兩個(gè)方面的好處:
(1)客戶(hù)端統(tǒng)一使用瀏覽器,由于瀏覽器具有統(tǒng)一性,它不需要特殊的配置和網(wǎng)絡(luò)連接,有效的屏蔽了不同服務(wù)商提供給用戶(hù)使用服務(wù)的差異性。

(2)瀏覽器的驕傲胡特性使得用戶(hù)使用起來(lái)非常簡(jiǎn)便,一通百通。服務(wù)端(Server)基于統(tǒng)一的HTTP協(xié)議,和傳統(tǒng)的C/S使用自己不同的自定義應(yīng)用層比簡(jiǎn)化了很多。使得服務(wù)器開(kāi)發(fā)者可以采用相對(duì)規(guī)范的開(kāi)發(fā)模式,這樣可以大大節(jié)省開(kāi)發(fā)成本,由于使用統(tǒng)一的HTTP,所以基于HTTP的服務(wù)器就有很多,如IIS、Tomcat等,這些服務(wù)器可以直接拿來(lái)使用,不需要服務(wù)開(kāi)發(fā)者單獨(dú)開(kāi)發(fā)。不僅如此,連開(kāi)發(fā)服務(wù)的通用框架和平臺(tái)都可以直接拿來(lái)使用,只需要專(zhuān)注業(yè)務(wù)邏輯即可,也正因?yàn)锽/S框架簡(jiǎn)化了服務(wù)器提供者的開(kāi)發(fā)過(guò)程,也促進(jìn)了更多的互聯(lián)網(wǎng)服務(wù)出現(xiàn)。

CDN架構(gòu)圖:

CDN架構(gòu)圖

B/S網(wǎng)絡(luò)架構(gòu)概述

B/S網(wǎng)絡(luò)架構(gòu)從前端到后端都得到了簡(jiǎn)化,基于統(tǒng)一的應(yīng)用層協(xié)議HTTP來(lái)交互數(shù)據(jù),與大多數(shù)傳統(tǒng)C/S互聯(lián)網(wǎng)應(yīng)用程序采用的長(zhǎng)連接的交互模式不同,HTTP采用的是無(wú)狀態(tài)的短連接的通信方式,通常情況下,一次請(qǐng)求就完成了一次數(shù)據(jù)交互,通常也對(duì)應(yīng)一個(gè)業(yè)務(wù)邏輯,然后這次通信連接就斷開(kāi)了。采用這種方式是為了能夠同時(shí)服務(wù)更多的用戶(hù),因?yàn)楫?dāng)前互聯(lián)網(wǎng)應(yīng)用每天都會(huì)處理上億的用戶(hù)請(qǐng)求,不可能對(duì)每個(gè)用戶(hù)的某一次訪問(wèn)一直保持這個(gè)連接。

基于HTTP本身的特點(diǎn),目前的B/S網(wǎng)絡(luò)架構(gòu)大多采用CDN的架構(gòu)設(shè)計(jì)(如上圖),既要滿(mǎn)足海量請(qǐng)求,也要保持快速響應(yīng),所以現(xiàn)在的網(wǎng)絡(luò)架構(gòu)會(huì)越來(lái)越復(fù)雜。

當(dāng)一個(gè)用戶(hù)在瀏覽器地址欄中輸入一個(gè)URL時(shí),將會(huì)發(fā)生很多操作。首先它會(huì)請(qǐng)求DNS把這個(gè)域名解析為對(duì)應(yīng)的IP地址,然后根據(jù)這個(gè)IP地址在互聯(lián)網(wǎng)商找到對(duì)應(yīng)的服務(wù)器,向這個(gè)服務(wù)器發(fā)起一個(gè)get請(qǐng)求,由這個(gè)服務(wù)器決定返回默認(rèn)的數(shù)據(jù)資源給訪問(wèn)的用戶(hù)。在服務(wù)端實(shí)際上還有很復(fù)雜的業(yè)務(wù)邏輯:服務(wù)器可能會(huì)有很多臺(tái),到底指定哪一個(gè)服務(wù)器來(lái)處理請(qǐng)求,這需要一個(gè)負(fù)載均衡設(shè)備來(lái)平均分配所有用戶(hù)的請(qǐng)求還有請(qǐng)求的數(shù)據(jù)是存儲(chǔ)在分布式緩存里還是一個(gè)靜態(tài)文件中,或是在數(shù)據(jù)庫(kù)里;當(dāng)數(shù)據(jù)返回瀏覽器時(shí),瀏覽器解析數(shù)據(jù)發(fā)現(xiàn)還有一些靜態(tài)資源(如CSS,JS或者圖片)時(shí)又會(huì)發(fā)起另外的HTTP請(qǐng)求,而這些請(qǐng)求很可能會(huì)在CDN上,那么CDN服務(wù)器又會(huì)處理這個(gè)用戶(hù)的請(qǐng)求,大體上一個(gè)用戶(hù)請(qǐng)求會(huì)設(shè)計(jì)這么多的操作,每一個(gè)細(xì)節(jié)都會(huì)影響這個(gè)請(qǐng)求最終是否會(huì)成功。

無(wú)論網(wǎng)絡(luò)架構(gòu)如何變化,始終有一些固定不變的原則需要遵守。

互聯(lián)網(wǎng)上的所有資源都要用一個(gè)URL來(lái)表示,URL就是同意資源定位符,如果你要發(fā)布一個(gè)服務(wù)或者一個(gè)資源到互聯(lián)網(wǎng)上,讓別人能夠訪問(wèn)到,那么你首先必須要有一個(gè)在世界上獨(dú)一無(wú)二的URL,不要小看這個(gè)URL,他幾乎包含了整個(gè)互聯(lián)網(wǎng)的架構(gòu)精髓。

必須基于HTTP與服務(wù)端交互,不管你訪問(wèn)的是國(guó)內(nèi)的還是國(guó)外的數(shù)據(jù),是文本數(shù)據(jù)還是流媒體,都必須按照套路出牌,也就是都要采用統(tǒng)一的打招呼方式,這樣人家才能明白你要的是什么。

數(shù)據(jù)展示必須在瀏覽器中進(jìn)行,當(dāng)你獲得數(shù)據(jù)資源后,必須在瀏覽器上才能使其恢復(fù)原貌。

只要滿(mǎn)足以上幾點(diǎn),基本上一個(gè)互聯(lián)網(wǎng)應(yīng)用就正確運(yùn)行起來(lái)了,當(dāng)然這中間包含了很多細(xì)節(jié)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,527評(píng)論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,687評(píng)論 3 429
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 178,640評(píng)論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 63,957評(píng)論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 72,682評(píng)論 6 413
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 56,011評(píng)論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,009評(píng)論 3 449
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 43,183評(píng)論 0 290
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,714評(píng)論 1 336
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 41,435評(píng)論 3 359
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 43,665評(píng)論 1 374
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,148評(píng)論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 44,838評(píng)論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 35,251評(píng)論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 36,588評(píng)論 1 295
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 52,379評(píng)論 3 400
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 48,627評(píng)論 2 380

推薦閱讀更多精彩內(nèi)容

  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類(lèi)型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,131評(píng)論 1 32
  • Web應(yīng)用程序 WEB,在英語(yǔ)中web即表示網(wǎng)頁(yè)的意思,它用于表示Internet主機(jī)上供外界訪問(wèn)的資源。Inte...
    陳先森mansplain閱讀 2,379評(píng)論 1 4
  • HTTP基本原理 URI、URL、URN(Uninform Resource) URI(Identifier):統(tǒng)...
    GHope閱讀 2,117評(píng)論 2 26
  • Yahoo!的Exceptional Performance團(tuán)隊(duì)為改善Web性能帶來(lái)最佳實(shí)踐。他們?yōu)榇诉M(jìn)行了一系列...
    拉風(fēng)的老衲閱讀 1,867評(píng)論 0 1
  • IOC 控制反轉(zhuǎn)容器控制程序?qū)ο笾g的關(guān)系,而不是傳統(tǒng)實(shí)現(xiàn)中,有程序代碼之間控制,又名依賴(lài)注入。All 類(lèi)的創(chuàng)建,...
    irckwk1閱讀 965評(píng)論 0 0