天天看點

Java Web——Web概述

——【1.Web概述】——

什麼是Web?

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

Web應用程式的工作原理?

Web應用程式大體上可以分為兩種,靜态網站和動态網站。

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

Java Web——Web概述

靜态網站的工作流程

而動态網頁則不然,頁面代碼雖然沒有變,但是顯示的内容卻是可以随着時間、環境或者資料庫操作的結果而發生改變的。這些網站通常使用HTML和動态腳本語言(入JSP、ASP或者是PHP等)編寫,并将編寫後的程式部署到Web伺服器上,由Web伺服器堆動态腳本代碼進行處理,并轉化成浏覽器可以解析的HTML代碼,傳回給用戶端浏覽器,顯示給使用者。

值得一提的是:動态網頁并非是那些帶有動畫效果的網頁,而是指具有互動性、内容可以自動更新,并且内容會根據通路的時間和通路者而改變的網頁。這裡所說的互動性是指網頁可以根據使用者的要求動态改變或響應。

由此可見,靜态網頁就像是老式的手機,隻能使用系統自帶的鈴聲和功能,而動态網頁就像是現代的手機,可以自行添加/删除或者說更改鈴聲和其他一些設定。

Java Web——Web概述

——【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 )等。

Java Web——Web概述

——【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 架構同樣簡化了伺服器提供者的開發,進而出現了越來越多的網際網路服務。
Java Web——Web概述

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 與服務端互動。不管你要通路的事國内的還是國外的資料,是文本資料還是流媒體,都必須按照套路出牌,也就是都得采用統一打招呼的方式,這樣人家才會明白你要的是什麼。
  • 資料展示必須在浏覽器中進行。當你擷取到資料資源後,必須在浏覽器上才能恢複它的容貌。
隻要滿足上面的幾點,一個網際網路應用基本上就能正确地運作起來了,當然這裡面還有很多細節。