1. 程式人生 > >Java工程師培訓課(十四【新的領域】)

Java工程師培訓課(十四【新的領域】)

夜光序言:

 

 

正文:

XML入門

1.1 引入

HTML,超文字標記語言。

html語言語法是很鬆散的!

1)標籤不區分大小寫的!

2)標籤可以不匹配的。

 

由w3c組織,針對html的語法缺陷,去設計了另一門,叫xml語言。

 

html語言的標籤是固定的。

1.2 XML語言

XML:,  Extend Markup lanuage 可擴充套件標記語言。

 

HTML               XML

概念       超文字標記語言      可擴充套件標記語言

標記數量   是固定的             是不固定的,可擴充套件的

作用       負責網頁的結構       1)描述帶關係的資料結構(作為軟體的配置檔案)

properties配置檔案: 鍵值對  name=eric   password=123456

xml可以描述包含與被包含的關係。

<student>

<name></name>

</student>

<student>

<name></name>

</student>

配置使用場景:

1)框架(struts2 , hibernate,spring),xml作為框架的配 置檔案

        2)tomcat伺服器軟體配置檔案(web.xml server.xml)

 

2)裝載資料(作為小型的“資料庫”)。

 

2 XML作用

2.1 作為軟體配置檔案

PCweb伺服器:學生管理系統 - > 新增學生 -> name=張三,age=20  -》 提交到後臺程式 - 》 把資料儲存到資料庫中

 

兩臺通訊條件;

IP地址和埠

java程式碼: 根據ip和埠連線資料庫伺服器(ip改動會改變程式碼)

 

properties檔案:

ip=211.34.21.43

port=20

xml檔案:

<host-list>

<host id="main">

<ip> 211.34.21.43</ip>

<port>20</port>

</host>

<host id="backup">

<ip> 211.34.21.44</ip>

<port>20</port>

</host>

</host-list>

PC資料庫伺服器1:oracle資料庫  211.34.21.43     20

 

PC資料庫伺服器2:oracle資料庫  211.34.21.44     20

 

2.2 作為小型資料庫

 

教師管理系統      教師資訊: 姓名  工齡  郵箱地址

 

傳輸資料:

字串:  張|三|20|[email protected]|.......|....  (格式不是行業規範的,不通用)

xml格式:

<teacher-list>

<teacher>

<name></name>

<email></email>

<workage></workage>

....

</teacher>

<teacher>

<name></name>

<email></email>

<workage></workage>

....

</teacher>

<teacher-list>              (xml是w3c組織的制定的標準)

json格式

 

獲取字串,擷取字串資料。

財務系統

發郵件給教師:

郵箱地址   姓名

 

方案1:財務系統中也儲存了一套教師資訊。資料維護成本比較高了!!!

方案2: 財務系統使用的教師資料從教師管理系統中傳送過去的。

3 XML語法

3.1 標籤

<student>學生</student>  

 注意:

1)分帶標籤體的標籤,也有空標籤。

2)標籤是區分大小寫

3)標籤一定要配對

4)標籤中間不能含有空格

5)不能使用數字開頭

6)如果沒有指定名稱空間的話, 標籤名中間不能含有冒號

7)在同一個xml檔案中,有且僅有一個根標籤

3.2 屬性

<student id="1"></student>

注意:

1)一個屬性分為屬性名和屬性值。屬性名和值之間使用=號分割。

2)屬性值一定要使用單引號或者雙引號包含,不能省略,也不能單雙混用!

3)一個標籤內可以包含多個屬性,但是不能出現同名的屬性

3.3 註釋

<!--  xml --->

3.4 文件宣告

<?xml version="1.0"  encoding="碼錶"?>

 

version: xml的版本號

encoding: 表示解析xml檔案內容時使用的碼錶

 

xml檔案的編碼問題:

1)xml檔案內容儲存的編碼(另存為-》選擇編碼儲存)

2)解析xml檔案內容的編碼(   <?xml version="1.0" encoding="utf-8"?> )

以上兩個編碼必須儲存一致,才能避免中文亂碼問題。

注意:

如果在ecplise開發工具上,編寫xml檔案,那麼xml檔案內容自動按照文件宣告的encoding的編碼儲存,所以不會中文亂碼問題.

 

3.5 轉義字元

和html的轉義字元.

3.6 CDATA塊

把CDATA塊中的內容全部原樣輸入

3.7 處理指令(不用了,過時了)

<?xml-stylesheet type="text/css" href="1.css"?>

 

練習:

通訊錄程式

聯絡人: 編號  姓名  性別  手機  地址  QQ

要求:

1)編寫一個xml檔案。(contact.xml),該檔案描述聯絡人的資訊

2)該檔案可以同時描述多個聯絡人。

 

4 XML解析

4.1 xml解析方式

1)DOM解析:

2)SAX解析

4.2 DOM解析的工具

Sun官方jaxp工具

jdom工具

dom4j工具: 三大框架讀取xml檔案的程式。(非官方的,第三方的)

dom for java

iphone4s  iphone for steven   

 

4.3 dom4j工具使用

1)到dom4j的官方下載 。dom4j-1.6.1.zip

2)匯入dom4j的支援jar包、

dom4j-1.6.1.jar核心包

 

 

 

總結:

xml解析

dom解析方法: dom4j的工具

 

查:

標籤: element("name")  

elements("name")

elements();

getName() 標籤名稱

getRootElement(): 根標籤

屬性: atrributeValue("name")  屬性值

atrribute("name")  物件

atrributes()  屬性物件列表

getName() : 屬性名

getValue() 屬性值

文字:

  getText();  當前標籤的文字

  elementText("name")  子標籤的文字

 

增:

DocumentHelper.createDocument()   文件

addElement("name");   標籤

addAtribute("name","value" )  屬性

 

改:

setValue()   修改屬性值

addAttribute(”同名“) 修改屬性值

setText()    修改文字內容

 

刪除:

detach()   標籤、屬性

getParent().remove(標籤/屬性)

 

 

夜光-作業:

編寫一個通訊錄程式

功能需求:

1)增加聯絡人

2)修改聯絡人

3)刪除聯絡人

4)查詢所有聯絡人(全部)

要求:

1)互動使用控制檯進行互動

2)聯絡人的資料儲存到xml檔案中(contact.xml)  (dom4j的操作)

 

 

回顧重點內容:

XML解析-DOM解析

 

1)DOM解析的原理:

xml解析引擎把一個xml檔案一次性載入進記憶體,在記憶體中建立一顆document物件樹。通過樹上的物件獲取或設定xml檔案資訊

 

2)基於dom解析原理工具

dom4j工具

 3)dom4j使用方法

查:

Document doc= new SAXReader().read("xml檔案");

標籤:

element("name")  查詢第一個子標籤

    elements("name")  查詢指定名稱的所有子標籤

elements()       查詢所有子標籤

屬性:

    attributeValue("name")  根據屬性名獲取屬性值

attribute("name")  根據屬性名獲取屬性物件

getName()  屬性名   /  getValue()  屬性值

   文字:

getText()    獲取當前標籤的文字內容

elementText("name")  獲取子標籤文字

 

增:

文件: DocumentHelper.createDocumnt();

標籤:  addElement("name")   

屬性:  addAttribute("name","value")

改:

屬性值: setValue("修改值")  /  addAttribute("同名屬性","修改值")

文字:  setText("文字")

刪:

標籤、屬性: detach()   /    getParent().remove(標籤/屬性)

 

1 XPath技術

1.1 作用

作用: 快速地查詢到xml檔案中節點。

 

當xml檔案中的標籤層次結構很深,那麼如何來快速地定位到所需的標籤呢?這就用到了xpath技術!!

 

1.2 體驗xpath技術

1)匯入jaxen-1.1-beta-6.jar  dom4j的xpath外掛包

2)在dom4j中使用xpath

      List<Node> list = selectNodes("xpath表示式")  查詢多個節點

 Node node = selectSingleNode("xpath表示式")   查詢一個節點

1.3 xpath表示式(重點)

/   絕對路徑    斜槓在最前面,代表xml檔案的根。斜槓在中間,表示子元素。

//  相對路徑    選擇後代元素(不分層次結構)

*   通配 選擇所有元素

[ ]   條件        選擇什麼條件下的元素。例如 /AAA/BBB[1] 選擇第一個BBB子元素

@   屬性         選取屬性

=    內容 (值)  

and  邏輯與

text()   選取文字內容

 

1.4 案例

模擬登入效果:

使用者輸入使用者名稱密碼 -> 到“資料庫”中是否存在使用者名稱和密碼的使用者 -》

存在: 登入成功

   不存在: 登入失敗

 

  

2 SAX解析

2.1 引入

xml解析方法:

dom解析:原理xml解析引擎一次性把整個xml檔案載入進記憶體,在記憶體建立一顆document樹。

問題:大檔案的話,使用dom解析效率比較低,甚至會導致記憶體溢位。

編碼方式: 面向物件程式設計方式

 

sax解析: 原理載入一點,讀取一點,處理一點。優勢:佔用的記憶體比較小。

程式設計方式:基於事件程式設計方式。

2.2 SAX解析工具

sun公司官方的sax解析工具。  在jdk中包含sax解析工具的api。org.xml.sax.*;

 

2.3 SAX解析的開發步驟

2.4 SAX案例

 

===============  DOM解析 vs  SAX解析=====================

 

 

DOM解析

SAX解析

原理

一次性載入進記憶體,構造docuemnt數,記憶體佔用比較大

載入一點,讀取一點,記憶體佔用相對小

讀取順序

可以讀取XML檔案任意位置資訊,甚至往回讀

只能是從上往下依次讀取,不能往回讀

操作方式

可以進行查詢,也可以進行修改

只能查詢

編碼方式

面向物件程式設計方式,更加適合java開發者

基於事件程式設計方式,相對java開發難理解

 

3 XML約束

3.1 什麼是約束?

xml語法: w3c組織對xml檔案的程式設計規則規範。(w3c組織制定的)

xml約束: 由開發者指定的對xml檔案內容規範。(開發者根據業務指定的)

 

3.2 約束分類

DTD約束:相對簡單的,資料型別簡單的

場景:hibernate  struts2

Schema約束:相對複雜,功能很強大,資料型別非常豐富。schema的出現時為了替代DTD的。

 

3.3 DTD約束

1)dtd的使用方法

內部的dtd

外部的dtd

 

2)語法

約束標籤

<!ELEMENT 元素名稱 類別> 或 <!ELEMENT 元素名稱 (元素內容)>

 

類別:

EMPTY:空標籤

PCDATA:普通字串(不能包含子標籤)

ANY: 任意內容(可以包含子標籤)

 

順序問題:

(子元素名稱 1,子元素名稱 2,.....): 一定要依次出現1,2,...

 

數量問題:

子元素:  有且僅有1個

+ :    1個或多個

* :  0個或多個

? :    0個或1個

 

 

約束屬性

<!ATTLIST 元素名稱 屬性名稱 屬性型別 預設值>

 

預設值

#REQUIRED:必須

#IMPLIED:不是必須的

#FIXED value : 固定的

 

屬性型別:控制屬性值

CDATA:普通字串

(en1|en2...): 列舉中的一個值

ID: 唯一的值

 

3.4 schema約束

重點:名稱空間

 

 

總結:

1)xml語法:

標籤、屬性、文件宣告、處理指令

2)xml解析(運用)

Dom解析:原理???(面向物件)

2.1 dom解析的工具:dom4j工具

2.2 對xml檔案增刪改查 (方法)

2.3 xpath技術: 快速查詢xml檔案的節點(標籤,屬性,文字)

SAX解析:原理???(基於事件的)

2.1 DefaultHandler類

startElement(): 開始標籤

characters():文字內容

endElement(): 結束標籤

3)xml約束(看懂)

dtd約束:簡單

schema約束: 看得懂名稱空間,如何找到scheme約束檔案?

語法查詢w3c文件

 

夜光:作業:通訊錄程式

 

web開發入門

1.1 回顧軟體結構分類

C/S: 客戶端與伺服器端

特點:

1)需要安裝特定的客戶端

2)伺服器程序升級,那麼客戶端程式同步升級

B/S: 瀏覽器與伺服器端

特點:

1) 不需要安裝特定的客戶端(只需要一個瀏覽器軟體)

2) 伺服器程序升級,客戶端程式不需要升級。

 

結論:進入web開發之後,軟體結構從C/S 過渡到 B/S

java web開發就是基於B/S結構軟體。

1.2 伺服器

從物理上來說,伺服器就是一臺PC機器。通常配置比較高。CPU 4核,記憶體8G以上,硬碟T

 

web伺服器:在PC機器上,安裝了web服務軟體,提供web服務

資料庫伺服器:在PC機器上,安裝了資料庫軟體(mysql/oracle/sql server),提供了資料儲存的服務

郵件伺服器:在PC機器上,安裝了收發郵件服務軟體,提供了收發郵件的功能

收郵件伺服器:pop3.126.com

發郵件伺服器:stmp.126.com

 

1.3 web服務軟體原理

web服務軟體作用:把本地的資源公開給外部訪問

 

javaweb: B/S   瀏覽器- >web服務軟體

 

 

/**

 * socket伺服器端程式

 * 1)把本地資源讀取

 *  2)傳送給不同的客戶端

 * @author APPle

 *

 */

public class SocketServer {

 

public static void main(String[] args) throws Exception{

//1.建立ServerSocket

ServerSocket server = new ServerSocket(8888);

 

System.out.println("伺服器已經啟動....");

 

while(true){

//2.接收客戶端的請求

Socket socket = server.accept();

 

//3.讀取本地的檔案

File file = new File("e:/myweb/test.html");

 

FileInputStream fis = new FileInputStream(file);

 

//4.構建資料傳送通道

OutputStream out = socket.getOutputStream();

 

//5.開始傳送資料

byte[] buf = new byte[1024];

int len = 0;

while( (len=fis.read(buf))!=-1 ){

out.write(buf, 0, len);

}

//6.關閉資源

fis.close();

out.close();

}

}

}

 

1.4 常用的市面上web服務軟體

web服務軟體 , 也可以說成是web伺服器   

 

WebLogic: 是BEA公司的產品。支援JavaEE規範。收費的。

javaSE規範:支援 IO流,集合,網路程式設計,執行緒技術

javaEE規範: 支援13種技術。servlet、jsp、ejb、jdbc

 

WebSphere: 是IBM公司的產品。支援JavaEE規範。收費的。解決方案

WebSphere -> IBM作業系統(aix)- IBM伺服器PC - IBM資料庫(DB2)

JBoss: 是Redhat公司的產品。支援JavaEE規範。linux。軟體免費開源的。服務收費的。

Tomcat: 是 Apache開源組織的產品。支援servlet/jsp規範(不支援ejb)。開源免費的

tomcat用在中小應用。

 

web開發基礎階段重點使用tomcat伺服器

2 Tomcat伺服器

2.1 基本操作

1)去apache官網。www.apache.org . tomcat的產品頁面: http://jakarta.apache.org

2)tomcat不同的安裝包

安裝版本:  window(exe  msi)      linux(rmp)

壓縮版本:   不分window和linux (zip 、 tar 、rar) 學習時使用

 

2.2 啟動和關閉

1)啟動

a)找到%tomcat%/bin/startup.bat,雙擊,彈出一個視窗停止不動。

b)確認視窗上顯示沒有任何錯誤,然後開啟瀏覽器輸入:

http://localhost:8080

 

看到一隻貓,證明tomcat伺服器啟動成功!!!

 

2)關閉

找到%tomcat%/bin/shutdown.bat,雙擊。

 

2.3 體驗tomcat伺服器作用

tomcat伺服器作用:把本地資源公開給外部訪問

 

webapps: 把需要公開訪問的檔案放到該目錄

2.4 URL

URL: 統一資源定位符。用於定位基於http協議的資源。

 

瀏覽器:  http://localhost:8080/myweb/test.html

 

http:// : 協議,http協議

執行流程: 在本地找hosts檔案,如果找不到,聯網找網路運營商的DNS伺服器

localhost   域名。

localhost: 本地域名

www.baidu.com: 外地域名

8080      定位具體的一個軟體。

tomcat: 8080

mysql:3306

oracle: 1521

myweb  : web應用的根目錄。

test.html:  web資源

 

練習:

1)把tomcat伺服器啟動

2)在webapps建立  myweb目錄,編寫一個html檔案

3)互相通過瀏覽器訪問(URL)

 

2.5 tomcat伺服器常見問題

1)閃退

原因: 在tomcat伺服器啟動時(執行startup命令),在本地環境變數中查詢一個叫JAVA_HOME的環境變數。(tomcat用java開發,需要用jvm執行)

解決辦法: 在本地環境變數中新增一個JAVA_HOME

JAVA_HOME= C:\Program Files\Java\jdk1.6.0_30 

 

2)端口占用問題

原因: tomcat伺服器啟動所需埠被其他軟體所佔用

解決辦法:

1)把佔用埠的軟體停止掉(程序殺死)

2)改變tomcat伺服器啟動埠

找到%tomcat%/conf/server.xml

 

<Connector port="8081" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />

 

3)CATALINA_HOME環境變數

原因: tomcat在啟動後會通過CATALINA_HOME環境變數加裝tomcat的根目錄下的檔案(例如conf、webapps)

解決辦法:建議不要設定CATALINA_HOME環境變數

 

注意:安裝版的tomcat會自動設定CATALINA_HOME環境變數設

3 Tomcat伺服器目錄結構

|-bin: 目錄。存放tomcat操作命令。bat是window版本,sh是linux版本。

startup.bat : 後臺在呼叫catalina.bat start

shutdown.bat  : 後臺在呼叫catalina.bat stop

|-conf: 目錄。存在tomcat伺服器軟體的配置檔案。server.xml檔案是核心配置檔案。

|-lib:目錄。支撐tomcat軟體執行的jar包。

|-logs:目錄。存在tomcat伺服器執行過程中日誌資訊。

|-temp: 目錄。tomct的臨時目錄,存在臨時檔案。

|-webapps: 目錄。存在web應用的目錄

|-work: 目錄。tomcat執行目錄。存放jsp頁面執行過程中產生的臨時檔案。

4 web應用目錄結構(規範)

|- WebRoot: 根目錄。一個web應用必須有一個根目錄。

|- 靜態資源:  html+css+javascript+images+xml

|-WEB-INF: 目錄。名稱是固定寫法。

|-classes: (可選) 目錄。名稱是固定寫法。存放class位元組碼

|-lib: (可選)目錄。名稱是固定寫法。存放jar包。不能有子目錄,全部jar包放在根目錄下。

|-web.xml: 檔案。web應用的配置檔案。

 

注意:

1)不做任何配置的情況下,WEB-INF目錄下的檔案不能直接通過瀏覽器訪問。

2)在web.xml檔案中進行配置,那麼WEB-INF目錄下的內容就可以被外部訪問到!!!

5 web應用部署三種方法

1)直接把web應用拷貝到webapps目錄下

預設web應用:ROOT是預設應用。訪問預設應用,不需要web應用名稱。

預設資源:訪問預設資源,不需要web資源名稱。

在web.xml檔案中配置

 

    <!-- 預設資源-->

<welcome-file-list>

<welcome-file>index.html</welcome-file>

<welcome-file>test.html</welcome-file>

<welcome-file>abc.html</welcome-file>

</welcome-file-list>

 

問題:tomcat軟體和web應用繫結在一起。

解決辦法: 把tomcat軟體和web應用分離!!!使用到虛擬web應用(虛擬網站)

2)虛擬網站配置

在%tomcat%/conf/server.xml檔案中修改:

<Host name="localhost"  appBase="webapps"

            unpackWARs="true" autoDeploy="true"

            xmlValidation="false" xmlNamespaceAware="false">         

 <!--配置虛擬網站

docBase: web應用所在的絕對路徑位置。

path: 訪問web應用使用的名稱。名稱可以自定義

-->

<Context docBase="C:\projects\myweb" path="/itcast"/>

</Host>

 

注意:

如果path為空字串,那麼也不需要名稱訪問該web應用,而且優先於ROOT應用。

問題:修改了server.xml核心配置檔案,風險比較高。

解決辦法: 新增配置檔案方法配置虛擬網站。

3)新增配置檔案方法配置虛擬網站(推薦使用)

在%tomcat%/conf/Catalina/localhost目錄下,新增abc.xml檔案

 

<?xml version="1.0" encoding="utf-8"?>

<!-- 配置虛擬網站

訪問web應用名稱就是xml的檔名abc

-->

<Context docBase="C:\projects\myweb"/>

 

6 Tomcat的站點配置

站點的配置:

<Host name="localhost"  appBase="webapps"

            unpackWARs="true" autoDeploy="true"

            xmlValidation="false" xmlNamespaceAware="false">

 

        </Host>

 

1)name: 表示站點的名稱。訪問站點就使用站點名稱

       appBase: 表示站點的根目錄。用於存放所有web應用。一個站點下可以包括多個web應用

 

 

如何在tomcat下配置一個站點:

1)修改%tomcat%/conf/server.xml

 

<!--- 配置一個新的站點: www.baidu.com

name: 站點的名稱

appBase:站點的根目錄

  -->

  <Host name="www.baidu.com"  appBase="C:\baidu"

            unpackWARs="true" autoDeploy="true"

            xmlValidation="false" xmlNamespaceAware="false">

 

      </Host>

 

2)修改本地域名和ip的對映檔案hosts檔案,加上

 127.0.0.1       www.baidu.com

3)啟動tomcat,訪問測試

在瀏覽器訪問:

預設站點:

http://localhost:8080

新站點:

http://www.baidu.com:8080/news/index.html

 

練習: 在本地tomcat伺服器上配置一個新浪站點。域名: www.sina.com.cn

7 手動開發動態資源

7.1 靜態資源 vs 動態資源

靜態資源: html+css+javascript

動態資源: servlet+jsp

 

靜態資源: 當用戶多次訪問該資源時,資源的原始碼永遠不會傳送改變的資源。

動態資源: 當用戶多次訪問該資源時,資源的原始碼可能會發生改變的資源。

 

7.2 開發動態資源技術

Servlet技術: 用java語言開發動態資源的技術

 

Servlet技術特點:

1)Servlet是普通的java類,繼承HttpServlet類,覆蓋doGet方法

2)Servlet程式必須由tomcat伺服器執行!!!

 

開發servlet的步驟:

 

1)編寫servlet程式,繼承HttpServlet

 

/**

 * 第一個servlet程式

 * @author APPle

 *

 */

public class HelloServlet extends HttpServlet{

 

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp)

throws ServletException, IOException {

//向瀏覽器輸出內容

resp.getWriter().write("this is first servlet!!!"+new Date());

}

 

}

 

2)把servlet交給tomcat伺服器執行!!!

  2.1 把class位元組碼檔案拷貝到web應用的WEB-INF/classes目錄下

 

  2.2 在web應用的web.xml檔案配置servlet

 

<web-app xmlns="http://java.sun.com/xml/ns/javaee"

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

   version="2.5">

 

<!--配置一個servlet -->

<servlet>

<!-- servet的內部名稱。可以自定義-->

<servlet-name>HelloServlet</servlet-name>

<!--- servlet程式的全名:包名+簡單類名 -->

<servlet-class>gz.itcast.b_servlet.HelloServlet</servlet-class>

</servlet>

 

<!-- servlet的對映配置-->

<servlet-mapping>

<!--servet的內部名稱,和上面內部名稱保持一致!!! -->

<servlet-name>HelloServlet</servlet-name>

<!-- servlet對映路徑: 表示在瀏覽器上訪問該servlet程式的名稱。該名稱可以自定義 -->

<url-pattern>/hello</url-pattern>

</servlet-mapping>

</web-app>

 

3)瀏覽器訪問servlet:

http://localhost:8080/myweb/hello

 

8 使用工具開發動態資源

1)建立一個web proejct

2)在WebRoot下編寫靜態資原始檔(html+css+javascript)

3)在src目錄下編寫servlet動態資源

使用servlet程式碼生成器:

a)右鍵src- > new -> 點選”servlet“

b)servlet的包,類名,指定覆蓋的方法(doGet)

c)next-> servlet內部名稱(不用改)-> url (訪問servlet名稱,可以改) -> finished

點選finished之後,生成servlet的程式碼和web.xml的配置資訊

4)關聯tomcat伺服器

a)window-> preferences- > MyEcplise->servers-> Tomcat6.X

b)選擇tomcat的根目錄,然後enable。

5)部署專案

6)啟動tomcat,訪問測試

 

 

1 Http協議入門

1.1 什麼是Http協議?

Http協議: 對瀏覽器客戶端 和 伺服器端資料傳輸格式的規範!!!!

1.2 檢視Http協議工具

1)火狐瀏覽器的firebug

2)谷歌瀏覽器的審查元素

3)telnet工具

a)cmd輸入 telnet localhost 8080 回車

b)ctrl+] 回車

c)輸入請求,回車

GET /day09/first HTTP/1.1

Host: localhost:8080

 

1.3 Http協議內容詳情

瀏覽器->伺服器(請求)

GET /day09/first HTTP/1.1

Host: localhost:8080

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Connection: keep-alive

 

伺服器->瀏覽器(響應)

HTTP/1.1 200 OK

Server: Apache-Coyote/1.1

Content-Length: 51

Date: Sun, 28 Dec 2014 01:51:16 GMT

 

this is first servlet!!Sun Dec 28 09:51:16 CST 2014

 

2 Http請求

GET /day09/first HTTP/1.1            --請求行(必須有)

Host: localhost:8080                --多個請求頭(必須有)

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Connection: keep-alive

                                --一個空行

name=eric&password=123456       --請求實體內容(可選)

 

2.1 請求行

GET /day09/first HTTP/1.1

#http協議版本:

http1.0: 當瀏覽器客戶端與伺服器連線之後,只能向伺服器傳送一次請求。

http1.1: 當瀏覽器客戶端與伺服器連線之後,可以傳送多次請求。(效率比1.0高)

 

問題:一個web頁面中,使用img標籤引用了三幅圖片,當客戶端訪問伺服器中的這個web頁 面時,客戶端總共會訪問幾次伺服器,即向伺服器傳送了幾次HTTP請求。

答案:4次

#請求資源

URI: 統一資源識別符號(可以定位本地檔案,區域網檔案,網際網路檔案)

URL:統一資源定位符(定位網際網路檔案),是URI的子集。

 

/day09/first  : web應用名稱+web資源名稱

 

#請求方式

請求方式: GET / POST  / HEAD / PUT / CONNECT/  TRACE / DELETE

常用的請求方式: GET  和  POST

 

表單提交:

<form action="提交的地址" method="GET/POST">

 

</form>

 

=========GET 和 POST方式區別?==============

GET方式:(在位址列輸入的請求,預設是GET方式)

1)位址列會發送改變。請求引數會跟在URI後面。引數以?開頭,引數之間用&分割

2)不合適傳遞敏感資料

3)GET方式提交內容有限制的,不超過1kB。

 

GET /day09/testMethod.html?userName=eric&userPwd=123456 HTTP/1.1

Host: localhost:8080

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Referer: http://localhost:8080/day09/testMethod.html

Connection: keep-alive

If-Modified-Since: Sun, 28 Dec 2014 02:40:40 GMT

If-None-Match: W/"961-1419734440000"

 

POST方式:

1)位址列不會改變。請求引數放在請求實體內容中。引數之間用&分割。

2)適合傳遞敏感資料

3)POST方式提交沒有限制的。

 

POST /day09/testMethod.html HTTP/1.1

Host: localhost:8080

User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:34.0) Gecko/20100101 Firefox/34.0

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: zh-cn,en-us;q=0.8,zh;q=0.5,en;q=0.3

Accept-Encoding: gzip, deflate

Referer: http://localhost:8080/day09/testMethod.html?userName=eric&userPwd=123456

Connection: keep-alive

 

userName=eric&userPwd=123456

 

2.2 多個請求頭

常見的請求頭: