方立勳_30天掌握JavaWeb_Web開發入門
WEB開發的相關知識
- WEB,在英語中web即表示網頁的意思,它用於表示Internet主機上供外界訪問的資源。
- Internet上供外界訪問的Web資源分為:
- 靜態web資源(如html 頁面):指web頁面中供人們瀏覽的資料始終是不變。
- 動態web資源:指web頁面中供人們瀏覽的資料是由程式產生的,不同時間點訪問web頁面看到的內容各不相同。
- 靜態web資源開發技術
- Html
- 常用動態web資源開發技術:
- JSP/Servlet、ASP、PHP等
- 在Java中,動態web資源開發技術統稱為Javaweb,我們課程的重點也是教大家如何使用Java技術開發動態的web資源,即動態web頁面。
WEB伺服器
- 學習web開發,需要先安裝一臺web伺服器,然後再在web伺服器中開發相應的web資源,供使用者使用瀏覽器訪問。
- 疑問:學習web開發,為什麼必須要先裝一個WEB伺服器?
常見WEB伺服器
WebLogic是BEA公司的產品,是目前應用最廣泛的Web伺服器,支援J2EE規範,而且不斷的完善以適應新的開發要求。
另一個常用的Web伺服器是IBM公司的WebSphere,支援J2EE規範。
在小型的應用系統或者有特殊需要的系統中,可以使用一個免費Web伺服器:Tomcat,該伺服器支援全部JSP以及Servlet規範。
一些預設埠:
http:80
stmp:
https:
以http協議去訪問www.baidu.com這臺主機下預設埠(80埠)
主機名:www.baidu.com
域名:baidu.com
Tomcat伺服器
Tomcat目錄層次結構
虛似目錄的對映方式
在server.xml檔案的host元素中配置,例如:
在Tomcat6中,不再建議在server.xml檔案中配置context元素,細節檢視tomcat伺服器關於context元素的說明。
讓tomcat自動對映: tomcat伺服器會自動管理webapps目錄下的伺服器webapps目錄中的we所有web應用,並把它對映成虛似目錄。換句話說,tomcatb應用,外界可以直接訪問。
讓web應用被外界訪問的三種方式:
- 直接扔到webapps下
- 在server.xml檔案的host元素中配置<Context path=”/xxx” docBase=”c:\mail”/>
- 在伺服器目錄\conf\catalina\localhost\新建一個xml檔案,檔名就是web應用的名稱 <ontext docBase=”c:\mail” />
WEB應用的組成結構
web.xml檔案
通過web.xml檔案,可以將web應用中的:
某個web資源配置為網站首頁
將servlet程式對映到某個url地址上
……
但凡涉及到對web資源進行配置,都需要通過web.xml檔案舉例:通過web.xml檔案配置網站首頁。
注意:Web.xml檔案必須放在web應用\WEB-INF目錄下。
配置虛似主機
配置虛似主機就是配置一個網站。
如需在WEB伺服器中配置一個網站,需使用Host元素進行配置,例:
配置的主機(網站)要想被外部訪問,必須在DNS伺服器或windows系統中註冊。
配置多個網站。
預設虛似主機。
Web資源訪問過程
軟體密碼學基礎
公鑰的加密只能私鑰解,私鑰加密的只能公鑰解。
- 使用如下命令生成伺服器證書(cmd下)
keytool -genkey -alias tomcat -keyalg RSA- 在server.xml檔案中配置加密聯結器,並指定加密聯結器從哪個金鑰庫中獲取數字證書
<Connector port=”8443” protocol=”HTTP/1.1” SSLEnabled=”true”
maxThreads=”150” scheme=”https” secure=”true”
clientAuth=”false” sslProtocol=”TLS” keystoreFile=”conf.keystore” keystorePass=”123456”/>
HTTP協議
http協議概述
- HTTP是hypertext transfer protocol(超文字傳輸協議)的簡寫,它是TCP/IP協議的一個應用層協議,用於定義WEB瀏覽器與WEB伺服器之間交換資料的過程。
- HTTP協議是學習JavaWEB開發的基石,不深入瞭解HTTP協議,就不能說掌握了WEB開發,更無法管理和維護一些複雜的WEB站點。
- HTTP協議的版本:HTTP/1.0、HTTP/1.1
什麼是http協議
- 客戶端連上web伺服器後,若想獲得web伺服器中的某個web資源,需遵守一定的通訊格式,HTTP協議用於定義客戶端與web伺服器通迅的格式。
- 使用telnet程式連上web伺服器,並使用HTTP協議獲取某個頁面,快速瞭解 HTTP協議的作用。
- 安裝IE瀏覽器外掛HttpWatch,檢視IE瀏覽器通過HTTP協議獲取某個頁面。
http1.0和http1.1
- 在HTTP1.0協議中,客戶端與web伺服器建立連線後,只能獲得一個web資源。
- HTTP1.1協議,允許客戶端與web伺服器建立連線後,在一個連線上獲取多個web資源。
- 使用telnet舉例說明。telnet localhost
- Q:一個web頁面中,使用img標籤引用了三幅圖片,當客戶端訪問伺服器中的這個web頁面時,客戶端總共會訪問幾次伺服器,即向伺服器傳送了幾次HTTP請求。
A:4次。請求網站一次,三張圖片三次。
HTP請求
客戶端連上伺服器後,向伺服器請求某個web資源,稱之為客戶端向伺服器傳送了一個HTTP請求。一個完整的HTTP請求包括如下內容:
一個請求行、若干訊息頭、以及實體內容,如下所示 :
空行下面是請求資料。
http請求的細節1–請求行:
請求行中的GET稱之為請求方式,請求方式有:
POST、GET、HEAD、OPTIONS、DELETE、TRACE、PUT
常用的有: GET、 POST
使用者如沒有設定,預設情況下瀏覽器向伺服器傳送的都是get請求,例如在瀏覽器直接輸地址訪問,點超連結訪問等都是get,使用者如想把請求方式改為post,可通過更改表單的提交方式實現。不管POST或GET,都用於向伺服器請求某個WEB資源,這兩種方式的區別主要表現在資料傳遞上:
如請求方式為GET方式,則可以在請求的URL地址後以?的形式帶上交給伺服器的資料,多個數據之間以&進行分隔,例如:
GET /mail/1.html?name=abc&password=xyz HTTP/1.1
GET方式的特點:在URL地址後附帶的引數是有限制的,其資料容量通常不能超過1K。
如請求方式為POST方式,則可以在請求的實體內容中向伺服器傳送資料,Post方式的特點:傳送的資料量無限制。
何時使用GET和POST?
http請求的細節2–訊息頭:
用於HTTP請求中的常用頭
- Accept: text/html,image 瀏覽器通過這個頭告訴伺服器,它所支援的資料型別
- Accept-Charset: ISO-8859-1 瀏覽器通過這個頭告訴伺服器,它支援哪種字符集
- Accept-Encoding: gzip,compress 瀏覽器通過這個頭告訴伺服器,支援的壓縮格式
- Accept-Language: en-us,zh-cn 瀏覽器通過這個頭告訴伺服器,它的語言環境
- Host: www.it315.org:80 瀏覽器通過這個頭告訴伺服器,想訪問哪臺主機
- If-Modified-Since: Tue, 11 Jul 2000 18:23:51 GMT 瀏覽器通過這個頭告訴伺服器,快取資料的時間
- User-Agent: Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)
Cookie- Connection: close/Keep-Alive 瀏覽器通過這個頭告訴伺服器,請求完後是斷開連結還是何持連結
- Date: Tue, 11 Jul 2000 18:23:51 GMT
HTTP響應
一個HTTP響應代表伺服器向客戶端回送的資料,它包括:
一個狀態行、若干訊息頭、以及實體內容。
http響應細節1–狀態行:
- 狀態行
格式: HTTP版本號 狀態碼 原因敘述
舉例:HTTP/1.1 200 OK - 狀態碼用於表示伺服器對請求的處理結果,它是一個三位的十進位制數。響應狀態碼分為5類,如下所示:
狀態碼 | 含義 |
---|---|
100–199 | 表示成功接收請求,要求客戶端繼續提交下一次請求才能完成整個處理過程 |
200–299 | 表示成功接收請求並已完成整個處理過程,常用200 |
300–399 | 為完成請求,客戶需進一步細化請求。例如,請求的資源已經移動一個新地址,常用302、307和304 |
400–499 | 客戶端的請求有錯誤,常用404 |
500–599 | 伺服器端出現錯誤,常用 500 |
http響應細節2–狀態行:
HTTP請求中的常用響應頭
- Server:apache tomcat 伺服器通過這個頭,告訴瀏覽器伺服器的型號
- Content-Encoding: gzip 伺服器通過這個頭,告訴瀏覽器,資料的壓縮格式
- Content-Length: 80 伺服器通過這個頭,告訴瀏覽器回送資料的長度
- Content-Language: zh-cn 伺服器通過這個頭,告訴瀏覽器語言環境
- Content-Type: text/html; charset=GB2312 伺服器通過這個頭,告訴瀏覽器回送資料的型別
- Last-Modifierad: Tue, 11 Jul 2000 18:23:51 GMT
- Refresh: 1;url=http://www.it315.org 伺服器通過這個頭,告訴瀏覽器定時重新整理
- Content-Disposition: attachment; filename=aaa.zip 伺服器通過這個頭,告訴瀏覽器以下載方式打資料
- Transfer-Encoding: chunked 伺服器通過這個頭,告訴瀏覽器資料是以分塊方式回送的
- Set-Cookie:SS=Q0=5Lb_nQ; path=/search
- Expires: -1 控制瀏覽器不要快取(eg:伺服器通過這個頭,告訴瀏覽器把回送的資源快取多長時間,-1或0,則是不快取)
- Cache-Control: no-cache
- Pragma: no-cache (伺服器通過以上兩個頭,也是控制瀏覽器不要快取資料)
- Connection: close/Keep-Alive
- Date: Tue, 11 Jul 2000 18:23:51 GMT
HTTP實用頭欄位:
1. HTTP請求頭欄位:*
- Range頭指示伺服器只傳輸一部分web資源,這個頭可以用來實現斷點續傳功能。Range欄位可以通過三種格式設定要傳輸的位元組範圍;
- Range:bytes=1000-2000傳輸範圍從1000到2000位元組。
- Range:bytes=1000-
傳輸web資源中第1000個位元組以後的所有內容。 - Range bytes=1000
傳輸最後1000個位元組。
2. HTTP響應訊息頭欄位:
- Accept-Ranges:這個欄位說明web伺服器是否支援Range支援,則返回Accept-Ranges;bytes,如果不支援,則返回Accept-Ranges:none
- Content-Range:指定了返回的web資源的位元組範圍。這個欄位值的格式是:例如:Context-Range:1000-3000/5000