1. 程式人生 > >方立勳_30天掌握JavaWeb_Web開發入門

方立勳_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伺服器

  1. WebLogic是BEA公司的產品,是目前應用最廣泛的Web伺服器,支援J2EE規範,而且不斷的完善以適應新的開發要求。

  2. 另一個常用的Web伺服器是IBM公司的WebSphere,支援J2EE規範。

  3. 在小型的應用系統或者有特殊需要的系統中,可以使用一個免費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應用被外界訪問的三種方式:

    1. 直接扔到webapps下
    2. 在server.xml檔案的host元素中配置<Context path=”/xxx” docBase=”c:\mail”/>
    3. 在伺服器目錄\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資源訪問過程

這裡寫圖片描述

軟體密碼學基礎

公鑰的加密只能私鑰解,私鑰加密的只能公鑰解。

  1. 使用如下命令生成伺服器證書(cmd下)
    keytool -genkey -alias tomcat -keyalg RSA
  2. 在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協議概述

  1. HTTP是hypertext transfer protocol(超文字傳輸協議)的簡寫,它是TCP/IP協議的一個應用層協議,用於定義WEB瀏覽器與WEB伺服器之間交換資料的過程。
  2. HTTP協議是學習JavaWEB開發的基石,不深入瞭解HTTP協議,就不能說掌握了WEB開發,更無法管理和維護一些複雜的WEB站點。
  3. 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