目錄
Web服務器基礎介紹
一、HTML是什么?
二、靜態網頁和動態網頁
1、靜態網頁
2、動態網頁
3、動態網頁語言
PHP
JSP
Python
Ruby
三、HTTP協議
1、HTTP協議是什么?
2、HTTP請求訪問的方法
3、GET與POST比較
GET:
POST:
4、HTTP狀態碼
5、HTTP請求訪問的完整過程
6、請求報文
7、響應報文
Web服務器基礎介紹
一、HTML是什么?
超文本標記語言,編程語言,主要負責實現頁面的結構;HTML叫:超文本標記語言,是一種規范,也是一種標準,通過標記符號來標記要顯示的網頁中的各個部分。網頁本身是一種文本文件,通過在文本文件中添加標記符號,可以告訴瀏覽器如何顯示其中的內容。
HTML文件可以使用任何能夠生成txt文件的文本編輯器來編輯,生成超文本標記語言文件,只用修改文件名后綴為html或者htm即可
二、靜態網頁和動態網頁
1、靜態網頁
在網站設計中,純粹HTML格式的網頁通常被稱為靜態網頁,靜態網頁標準的HTML文件,他的文件拓展名是.htm、.html。靜態網頁是網站建設的基礎,早期的網站一般都是由靜態網頁制作的。靜態網頁也可以出現各種動態的效果,如.GIF格式的動畫、FLASH、滾動字幕等。這些“動態效果”只是視覺上的,與下面將要介紹的動態網頁是不同的概念。
2、動態網頁
所謂的動態網頁,是指跟靜態網頁相對的一種網頁編程技術。靜態網頁,隨著HTML代碼的生成,頁面的內容和顯示效果就基本上不會發生變化了——除非是修改頁面代碼。而動態網頁則不然,頁面代碼雖然沒有變,但是顯示的內容卻是可以隨著時間、環境或者數據庫操作的結果而發生改變的。動態網頁URL的后綴不是.htm、.html、.shtml、.xml等靜態網頁的常見網頁制作格式,而是以.aspx、.asp、.jsp、.php、.perl、.cgi等形式為后綴,并且在動態網頁網址中有一個標志性的符號——“?”。
動態網頁是基本的html語法規范與Java、PHP、C#等高級程序設計語言、數據庫編程等多種技術的融合,以期實現對網站內容和風格的高效、動態和交互式的管理。因此,從這個意義上來講,凡是結合了HTML以外的高級程序設計語言和數據庫技術進行的網頁編程技術生成的網頁都是動態網頁。
3、動態網頁語言
早期的動態網頁
主要采用通用網關接口 CGI(Common Gateway Interface)技術,雖然 CGI 技術已經發展成熟而且功能強大, 但由于編程困難、效率低下、修改復雜,所以有逐漸被新技術取代的趨勢
PHP
即 Hypertext Preprocessor(超文本預處理器),它是當今 Internet 上最為火熱的腳本語言,其語法借鑒了 C、Java、PERL 等語言,但只需要很少的編程知識你就能使用 PHP 建立一個真正交互的 Web 站點。
JSP
即 Java Server Pages(Java 服務器頁面),它是由 Sun Microsystem 公司于 1999 年 6 月推出的新技術,是基于 Java Servlet 以及整個 Java 體系的 Web 開發技術。
Python
是一種面向對象、跨平臺的動態類計算機程序設計語言,最初被設計用于編寫自動化腳本(shell),隨著版本的不斷更新和語言新功能的添加,越來越多被用于獨立的大型項目開發。
Ruby
是一種簡單快捷的面向對象(面向對象程序設計)腳本語言,在 20 世紀 90年代由日本人松本行弘(Yukihiro Matsumoto) 開發,遵守GPL 協議和Ruby License。它的靈感與特性來自于 Perl、Smalltalk、Eiffel、Ada 以及 Lisp 語言。
三、HTTP協議
1、HTTP協議是什么?
HTTP協議采用了請求/響應模型。客戶端向服務器發送一個請求,請求頭包含請求的方法、URL、協議版本、以及包含請求修飾符、客戶信息和內容的類似于MIME的消息結構。
服務器以一個狀態行作為響應,響應的內容包括消息協議的版本,成功或者錯誤編碼加上服務器信息、實體元信息以及可能的實體內容。
注意:HTTP已經演化出了很多版本,他們中的大部分都是向下兼容的
HTTP/0.9:已過時。只接受 GET 一種請求方法,沒有在通訊中指定版本號,且不支持請求頭。由于該版本不支持 POST 方法,所以客戶端無法向服務器傳遞太多信息。
HTTP/1.0:這是第一個在通訊中指定版本號的 HTTP 協議版本,至今仍被廣泛采用,特別是在代理服務器中。
HTTP/1.1:引入了持久連接,即TCP連接默認不關閉,可以被多個請求復用,能很好地配合代理服務器工作。還支持管道方式機制,即在同一個TCP連接里面,客戶端可以同時發送多個請求,以便降低線路負載,提高傳輸速度。
HTTP/2.0:完全多路復用,在一個連接里,客戶端和瀏覽器都可以同時發送多個請求或回應,而且不用按照順序一一對應。引入了頭信息壓縮機制,使用gzip或compress壓縮后再發送。支持服務端推送,允許服務器未經請求,主動向客戶端發送資源。
2、HTTP請求訪問的方法
HTTP支持幾種不同的請求命令,這些命令都被稱為HTTP方法
每條HTTP請求報文都包含一個方法,告訴服務器要執行什么動作,包括:獲取一個頁面,運行一個網關程序,刪除一個文件等。
最常用的方法是GET、POST、PUT。
①GET? ? ? ? ? ?對服務器資源獲取的簡單請求
②PUT? ? ? ? ? ?向服務器提交數據,以修改數據
③DELETE? ? 刪除服務器上的某些資源
④POST? ? ? ? 用于發送包含用戶提交數據的請求
⑤HEAD? ? ? ? 請求頁面的首部,獲取資源的元信息
GET請求會向數據庫發索取數據的請求,從而來獲取信息,該請求不會產生副作用。無論進行多少次操作,結果都是一樣的
PUT請求是向服務器端發送數據的,從而改變信息,無論進行多少次PUT操作,其結果并沒有不同,與GET不同
DELETE請求顧名思義,就是用來刪除某一個資源的。
3、GET與POST比較
GET:
①從指定的服務器上獲取數據
②請求可以被緩存
③請求會被保存在瀏覽器的瀏覽記錄里
④請求有長度的限制
⑤主要用于獲取數據
⑥查詢的字符串不會顯示在url后綴中,不安全
POST:
①提交數據給指定服務器處理
②請求不能被緩存
③請求不會保存在瀏覽器的瀏覽記錄里
④請求沒有長度限制
⑤查詢的字符串不會顯示url中比較安全
4、HTTP狀態碼
HTTP狀態碼是用來表示網頁服務器HTTP響應狀態的3位數字代碼,當瀏覽器請求某一url時,服務器根據處理情況返回響應的處理狀態。
狀態碼首位 | 已定義范圍 | 分類 |
1xx | 100-101?? ? | 信息提示 |
2xx | 200-206?? ? | 成功 |
3xx | 300-305?? ? | 重定向 |
4xx | 400-415 | 客戶端錯誤 |
5xx | 500-505 | 服務器錯誤 |
http常見狀態碼:
狀態碼?? ?功能描述
200?? ?一切正常
301?? ?永久重定向,將緩存記錄在瀏覽器中
302?? ?臨時重定向,沒有緩存,每次都要重定向
401?? ?用戶名或密碼錯誤
403?? ?禁止訪問(客戶端IP地址被拒絕)
404?? ?請求的文件不存在
414?? ?請求URL頭部過長
500?? ?服務器內部錯誤
502?? ?無效網關
503?? ?當前服務不可用
504?? ?網關請求超時
5、HTTP請求訪問的完整過程
1.建立連接
2.接收請求
3.處理請求
4.訪問資源
5.構建響應報文
6.發送響應報文
7.記錄日志
6、請求報文
①請求行:請求行由請求方法,url以及協議版本三部分組成。
②請求頭:請求頭為請求報文添加了一些附加信息,由名\值對組成,每行一對,名和值之間使用冒號分隔
③空行:請求頭部的最后會有一個空行,表示請求頭部結束,接下來為請求體,這一行非常重要,必不可少。
④請求體:請求體是請求提交的參數,get方法已經在url中指明了參數,所以提交時沒有數據。post方法提交的參數在請求體中。
常用的請求頭:
請求頭 | 描述 |
Host | 接受請求的服務器地址,可以是Ip:端口號,也可以是域名 |
User-Agent | 發送請求的應用程序名稱 |
Connection | 指定與連接相關的屬性,如Connection:Keep-Alive |
Accept-Charset | 通知服務端可以發送的編碼格式 |
Accept-Encoding | 通知服務端可以發送的數據壓縮格式 |
Accept-Language? | 通知服務端可以發送的語言 |
7、響應報文
①狀態行:狀態行由協議版本,狀態碼,狀態碼描述三部分組成。
②響應頭:響應頭與請求頭部類似,為響應報文添加了一些附加信息。
③空行:響應頭部的最后會有一個空行,表示響應頭部結束。
④響應體:服務器返回的相應HTML數據,瀏覽器對其解析后顯示頁面
常見相映頭:
響應頭 | 描述 |
Server | 服務器應用程序軟件的名稱和版本 |
Content-Type | 響應正文的類型(是圖片還是二進制字符串) |
Content-Length? | 響應正文長度 |
Content-Charset | 響應正文使用的編碼 |
Content-Encoding | 響應正文使用的數據壓縮格式 |
Content-Language | ?響應正文使用的語言 |