web本意是蜘蛛網和網的意思。現廣泛譯作網絡、互聯網等技術領域。表現為三種形式,即超文本(hypertext)、超媒體(hypermedia)、超文本傳輸協議(HTTP)等。
當你想進入一個網頁, 或者其他網絡資源的時候,通常你要首先在你的瀏覽器上鍵入你想訪問網頁的統一資源定位符(Uniform Resource Locator),或者通過超鏈接方式鏈接到那個網頁或網絡資源。這之后的工作首先是URL的服務器名部分,被名為域名系統的分布於全球的因特網數據庫解析,並根據解析結果決定進入哪一個IP地址(IP address)。
接下來的步驟是為所要訪問的網頁,向在那個IP地址工作的服務器發送一個HTTP請求。在通常情況下,HTML文本、圖片和構成該網頁的一切其他文件很快會被逐一請求並發送回用戶。
網絡瀏覽器接下來的工作是把HTML、CSS和其他接受到的文件所描述的內容,加上圖像、鏈接和其他必須的資源,顯示給用戶。這些就構成了你所看到的“網頁”。
大多數的網頁自身包含有超鏈接指向其他相關網頁,可能還有下載、源文獻、定義和其他網絡資源。像這樣通過超鏈接,把有用的相關資源組織在一起的集合,就形成了一個所謂的信息的“網”。這個網在因特網上被方便使用,就構成了最早在1990年代初蒂姆·伯納斯-李所說的萬維網。
HTTP協議 是web學習的核心!!!
學東東切忌只學配置,不學原理:只學會框架有什么用,要會自己寫框架!!
web學習直接關系到J2EE的學習
一、HTTP 超文本傳輸協議 人類之所發展得如此快,就是因為有自己的語言
1、所謂超文本:即純文本語言,不依賴於任何特定語言,任何語言都可以操作它(如Java、c++)
2、傳入:HTTP的應用價值在於傳輸
3、HTTP是無狀態協議
基於請求/響應模型
服務器和客戶端的交互僅限於請求/響應過程,結束之后便斷開,在下一次請求服務器會認為新的客戶端
二、要真正理解web工作原理,就必須徹底了解http協議
三、HTTP請求信息(瀏覽器信息)
1、請求行:GET/POST(流的組織(請求)方式) URL(地址+目錄) 版本號
2、請求頭:Host:客戶端IP和端口
User-Agent:瀏覽器信息
Accept:客戶端能接收的數據類型
Accept-encoding:是否支持壓縮的流
Accept-charset:客戶端字符編碼集
3、空行:分割請求頭和消息體
4、消息體:請求的參數
四、HTTP響應信息(服務器信息)
1、狀態行:HTTP版本 服務器狀態(比如:404找不到...) 描述信息
2、響應頭
content-text:服務器發送信息的類型
date:發送時間
server:服務器類型
3、消息體:服務器發送給客戶端的頁面內容
五、模型
客戶端-----通過socket建立連接-----服務器
客戶端-----請求----->服務器
客戶端<-----響應-----服務器
客戶端-----斷開-----服務器
下一次連接.......
六、傳統服務器
缺點:無法生成動態頁面
於是加入一個輔助應用:通過客戶端提交的參數來選擇服務類型
七、輔助應用
1、在獲取請求之后先執行一段代碼,再返回頁面
2、根據客戶端請求參數來調用輔助應用
3、類似word文檔,需要注冊(注冊表)
八、對於服務器的缺點的解決方案
1、最早的解決方案:CGI通用網關接口(一種與外部程序通訊的標准)
原理:web服務器調用外部程序,再將返回的結果返回客戶端
CGI的缺點:每次客戶端請求都要在服務器上開啟一個進程,這樣會大大消耗服務器資源
更好的解決方案是:開啟服務器進程一次,就處理所有請求
2、java的解決方案(解決CGI的缺點:其實CGI是現在web服務器的鼻祖):servlet+web容器
servlet是一個與平台無關的java接口
理解servlet,是掌握javaweb編程的核心
sevlet受控於另一個java應用程序,它就是web容器
servlet+web容器:為每個請求開啟一個線程,線程占用進程的一部分
sevlet沒有main方法,說明它要被別的類web容器調用
servlet到web容器需要用xml文件注冊,而xml的解析由web容器封裝
九、web容器對servlet的支持包括:
1、通訊支持:解析流,封裝請求/響應對象
2、生命周期管理:我們書寫的servlet由容器來調用,也就是sevlet的產生和消亡生命周期
3、多線程支持:解決線程同步,開啟關閉等,由容器廠商來做
4、JSP支持:翻譯頁面
5、處理安全性:處理異常等等,比如:servlet拋出異常,由web容器來處理
總結:web容器主要是用於,給處於容器中的應用程序組件(servlet、jsp)提供一個環境,
使sevlet和jsp直接和容器中的環境變量交互。
這樣我們就可以把注意力放在,用servlet實現業務邏輯上,不必為
系統底層服(如線程管理,安全性和網絡通信等)務編寫代碼。
十、web容器的實現
根據sevlet的規范來實現web容器
servlet規范之定義了一個容器必須實現的標准功能。那么不同的容器廠商就有了更多的容器實現選擇:
Tomcat
Jboss
WebLogic
WebSphere
Orecle9i AS