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 多個請求頭
常見的請求頭: