Java Web——Web概述

已經很久沒有更新博客了,過年忙著吃喝玩樂,就怠惰了一小下下?幸好這學期新開的課程都比較有趣——Java Web和Android。至少對于我自己來說,既充滿挑戰,又富有趣味。

——【1.Web概述】——

什么是Web?

Web在計算機網頁開發設計中就是網頁的意思。網頁是網站中的一個頁面,我們平常瀏覽網站時,看到的都是一個一個的頁面,通常它們都是HTML格式的。網頁可以展示文字、圖片、媒體等內容,而這些都是需要通過瀏覽器來閱讀。

Web應用程序的工作原理?

Web應用程序大體上可以分為兩種,靜態網站動態網站

早期的Web應用主要是靜態頁面的瀏覽,即靜態網站。這些網站使用HTML描寫,通常來說隨著html代碼的生成,頁面的內容和顯示效果就基本上不會發生變化了——除非你修改頁面代碼。這些代碼放在Web服務器上,用戶使用瀏覽器通過HTTP協議請求服務器上的Web頁面,服務器上的Web服務器接受到用戶的請求處理后,再發送給客戶端瀏覽器,顯示給用戶。整個過程就像下圖:

靜態網站的工作流程

而動態網頁則不然,頁面代碼雖然沒有變,但是顯示的內容卻是可以隨著時間、環境或者數據庫操作的結果而發生改變的。這些網站通常使用HTML動態腳本語言(入JSP、ASP或者是PHP等)編寫,并將編寫后的程序部署到Web服務器上,由Web服務器堆動態腳本代碼進行處理,并轉化成瀏覽器可以解析的HTML代碼,返回給客戶端瀏覽器,顯示給用戶。

值得一提的是:動態網頁并非是那些帶有動畫效果的網頁,而是指具有交互性、內容可以自動更新,并且內容會根據訪問的時間和訪問者而改變的網頁。這里所說的交互性是指網頁可以根據用戶的要求動態改變或響應。
由此可見,靜態網頁就像是老式的手機,只能使用系統自帶的鈴聲和功能,而動態網頁就像是現代的手機,可以自行添加/刪除或者說更改鈴聲和其他一些設置。

——【2.Web的發展歷程】——

自從1989年由 Tim Berners-Lee(蒂姆·伯納斯·李) 發明了 World Wide Web 以來,Web 主要精力了3個階段,分別是靜態文檔階段(指代 Web 1.0)、動態網頁階段(指代 Web 1.5)和 Web 2.0 階段。

① 靜態文檔階段

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

隨著互聯網技術的不斷發展以及網上信息呈幾何倍數的增長,人們逐漸發現手工編寫包含所有信息和內容的頁面,對人力和物理都是一種極大的浪費,而且幾乎變得難以實現。另外,這樣的頁面也無法實現各種動態的交互功能。這就促使了 Web 技術進入了發展的第二階段——動態網頁階段。

② 動態網頁階段

為了克服靜態頁面的不足,人們將傳統單機環境下的編程技術與 Web 技術相結合,從而形成新的網絡編程技術。網絡編程技術通過在傳統的靜態網頁中加入各種程序和邏輯控制,從而實現動態和個性化的交流與互動。我們將這種使用網絡編程技術創建的頁面稱為動態頁面。動態頁面的后綴通常是.jsp、.php、和.asp等,而靜態頁面的后綴通常是.htm、.html和.shtml等。

③ Web 2.0 階段

隨著互聯網技術的不斷發展,又提出了一種新的互聯網模式——Web 2.0。這種模式更加以用戶為中心,通過網絡應用( Web Applications )促進網絡上人與人間的信息交換和協同合作。

Web 2.0 技術主要包括:博客( BLOG )、微博( Twitter )、維基百科全書( Wiki )、即時信息( IM )等。

——【3.網絡程序開發的體系結構】——

隨著 Web 2.0 時代的到來,互聯網的網絡架構已經從傳統的 C/S 架構轉變為更加方便、快捷的 B/S 架構,B/S 架構大大簡化了用戶使用網絡應用的難度,這種人人都能上網、人人都能使用網絡上提供的服務的方法也進一步推動了互聯網的繁榮。

理解 C/S 和 B/S 可以通過一些實際的例子。C/S 就像是桌面 QQ 等一些運行在桌面的程序,,在服務端主要就是一個數據庫,把所有業務邏輯以及界面的渲染操作交給客戶端去完成。而 B/S 就是我們的瀏覽器,把業務邏輯交給服務端完成,客戶端僅僅只做界面渲染和數據交換。

B/S 架構帶來了以下兩個方面的好處:

  • 客戶端使用同一的瀏覽器( Browser )。由于瀏覽器具有統一性,它不需要特殊的配置和網絡連接,有效的屏蔽了不同服務提供商提供給用戶使用服務的差異性。另外,最重要的一點,瀏覽器的交互特性使得用戶使用它非常簡便,而且用戶行為的可繼承性非常強,也就是用戶只要學會了上網,不管使用的是哪一個應用,一旦學會了,在使用其他互聯網服務時同樣具有了使用經驗,因為它們都是基于同樣的瀏覽器操作界面。

  • 服務端( Server )基于統一的 HTTP 。和傳統的 C/S 架構使用自定義的應用層協議不同,B/S 價格使用的都是統一的 HTTP。使用同一的 HTTP 也為服務提供商簡化了開發模式,使得服務器開發者可以采用相對規范的開發模式,這樣可以大大節省開發成本。由于使用統一的 HTTP,所以基于 HTTP 的服務器就有很多,如 IIS、Tomcat 等,這些服務器可以直接拿來使用,不需要服務開發者單獨來開發。不僅如此,連開發服務的通用框架都不需要單獨開發,服務開發者只需要關注提供服務的應用邏輯,其他一切平臺和框架都可以直接拿來使用,所以 B/S 架構同樣簡化了服務器提供者的開發,從而出現了越來越多的互聯網服務。

CDN 架構圖

B/S 網絡架構概述

B/S 網絡架構從前端到后端都得到了簡化,基于統一的應用層協議 HTTP 來交互數據,與大多數傳統 C/S 互聯網應用程序采用的長連接的交互模式不同,HTTP 采用無狀態的短連接的通信方式,通常情況下,一次請求就完成了一次數據交互,通常也對應一個業務邏輯,然后這次通信連接就斷開了。采用這種方式是為了能夠同時服務更多的用戶,因為當前互聯網應用每天都會處理上億的用戶請求,不可能每個用戶訪問一次后就一直保持這個連接。

基于 HTTP 本身的特點,目前的 B/S 網絡架構大多采用 CDN 的架構設計(如上圖),既要滿足海量用戶的訪問請求,又要保持用戶請求的快速響應,所以現在的網絡架構也越來越復雜。

當一個用戶在瀏覽器里輸入 www.taobao.com 這個 URL 時,將會發生很多操作。首先它會請求 DNS 吧這個域名解析成對應的 IP 地址,然后根據這個 IP 地址在互聯網上找到相對應的服務器,向這個服務器發起一個 get 請求,由這個服務器決定返回默認的數據資源給訪問的用戶。在服務器端實際上還有很復雜的業務邏輯:服務器可能有很多臺,到底指定哪一臺服務器來處理請求,這需要一個負載均衡設備來平均分配所有用戶的請求;還有請求的數據是存儲在分布式緩存里還是一個靜態文件中,或是在數據庫里;當數據返回瀏覽器時,瀏覽器解析數據發現還有一些靜態資源( 如 CSS 、JS 或者圖片 )時又會發起另外的 HTTP 請求,而這些請求很可能會在 CDN 上,那么 CDN 服務器又會處理這個用戶的請求,大體上一個用戶請求會設計這么多的操作。每一個細節都會影響這個請求最終是否會成功。

不管網絡架構如何變化,時鐘有一些固定不變的原則需要遵守。

  • 互聯網上所有資源都要用一個 URL 來表示。URL 就是同意資源定位符,如果你要發布一個服務或者一個資源到互聯網上,讓別人能夠訪問到,那么你首先必須要有一個在世界上獨一無二的 URL 。不要小看這個 URL ,它幾乎包含了整個互聯網的架構精髓。
  • 必須基于 HTTP 與服務端交互。不管你要訪問的事國內的還是國外的數據,是文本數據還是流媒體,都必須按照套路出牌,也就是都得采用統一打招呼的方式,這樣人家才會明白你要的是什么。
  • 數據展示必須在瀏覽器中進行。當你獲取到數據資源后,必須在瀏覽器上才能恢復它的容貌。

只要滿足上面的幾點,一個互聯網應用基本上就能正確地運行起來了,當然這里面還有很多細節。

參考資料:

①《Java Web 程序設計 慕課版——明日科技·出品》
②《深入分析Java Web技術內幕——許令波 著》


歡迎轉載,轉載請注明出處!
簡書ID:@我沒有三顆心臟
github:wmyskxz
歡迎關注公眾微信號:wmyskxz
分享自己的學習 & 學習資料 & 生活
想要交流的朋友也可以加qq群:3382693

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,936評論 6 535
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,744評論 3 421
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,879評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,181評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,935評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,325評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,384評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,534評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,084評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,892評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,067評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,623評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,322評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,735評論 0 27
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,990評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,800評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,084評論 2 375

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,796評論 18 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,674評論 25 708
  • Web測試基礎 I. 如何開展Web測試 Web測試的對象 Web的頁面元素 Web的業務邏輯 Web的數據行為 ...
    厲鉚兄閱讀 4,401評論 4 62
  • 可能是楓葉無情,我從偏僻小鎮來到這高樓林立的都市。小時候短臂與矮山,現在的冷漠和匆匆,我在時光之下,呆呆看著飛馳而...
    書妻閱讀 371評論 0 0
  • 在這里介紹三個方向:態度,精神面貌和分寸。 001.態度 面對人生,我們應該抱著向白開水一樣的狀態來生活。有人會說...
    欣愿5216閱讀 226評論 0 1