Response
1.響應(yīng)消息(response)組成:響應(yīng)行,響應(yīng)頭,響應(yīng)空行,響應(yīng)體
2.響應(yīng)行組成:協(xié)議/版本 響應(yīng)狀態(tài)碼 狀態(tài)碼描述
3.響應(yīng)狀態(tài)碼:1. 1xx:服務(wù)器就收客戶端消息,但沒有接受完成,等待一段時間后,發(fā)送1xx多狀態(tài)碼
2. 2xx:成功。代表:200
3. 3xx:重定向。代表:302(重定向),304(訪問緩存)
4. 4xx:客戶端錯誤。
* 代表:
* 404(請求路徑?jīng)]有對應(yīng)的資源)
* 405:請求方式?jīng)]有對應(yīng)的doXxx方法
5. 5xx:服務(wù)器端錯誤。代表:500(服務(wù)器內(nèi)部出現(xiàn)異常)
4.重定向方法:response.sendRedirect方法
特點:1. 地址欄發(fā)生變化
2. 重定向可以訪問其他站點(服務(wù)器)的資源
3. 重定向是兩次請求。不能使用request對象來共享數(shù)據(jù)
5.亂碼問題:response.setContentType("text/html;charset=utf-8");
6.響應(yīng)頭:1. Content-Type:服務(wù)器告訴客戶端本次響應(yīng)體數(shù)據(jù)格式以及編碼格式
2. Content-disposition:服務(wù)器告訴客戶端以什么格式打開響應(yīng)體數(shù)據(jù)
Request
-
request對象和response對象的原理
- request和response對象是由服務(wù)器創(chuàng)建的。我們來使用它們
- request對象是來獲取請求消息,response對象是來設(shè)置響應(yīng)消息
-
其他功能:
1. 獲取請求參數(shù)通用方式:不論get還是post請求方式都可以使用下列方法來獲取請求參數(shù)
1. String getParameter(String name):根據(jù)參數(shù)名稱獲取參數(shù)值 username=zs&password=123
2. String[] getParameterValues(String name):根據(jù)參數(shù)名稱獲取參數(shù)值的數(shù)組 hobby=xx&hobby=game
3. Enumeration<String> getParameterNames():獲取所有請求的參數(shù)名稱
4. Map<String,String[]> getParameterMap():獲取所有參數(shù)的map集合* 中文亂碼問題: * get方式:tomcat 8 已經(jīng)將get方式亂碼問題解決了 * post方式:會亂碼 * 解決:在獲取參數(shù)前,設(shè)置request的編碼request.setCharacterEncoding("utf-8"); -
請求轉(zhuǎn)發(fā):一種在服務(wù)器內(nèi)部的資源跳轉(zhuǎn)方式
1. 步驟:
1. 通過request對象獲取請求轉(zhuǎn)發(fā)器對象:RequestDispatcher getRequestDispatcher(String path)
2. 使用RequestDispatcher對象來進(jìn)行轉(zhuǎn)發(fā):forward(ServletRequest request, ServletResponse response)2. 特點: 1. 瀏覽器地址欄路徑不發(fā)生變化 2. 只能轉(zhuǎn)發(fā)到當(dāng)前服務(wù)器內(nèi)部資源中。 3. 轉(zhuǎn)發(fā)是一次請求
4.* 域?qū)ο螅阂粋€有作用范圍的對象,可以在范圍內(nèi)共享數(shù)據(jù)
* request域:代表一次請求的范圍,一般用于請求轉(zhuǎn)發(fā)的多個資源中共享數(shù)據(jù)
* 方法:
1. void setAttribute(String name,Object obj):存儲數(shù)據(jù)
2. Object getAttitude(String name):通過鍵獲取值
3. void removeAttribute(String name):通過鍵移除鍵值對
5.獲取ServletContext:
* ServletContext getServletContext()
6.請求頭:
- (*)String getHeader(String name):通過請求頭的名稱獲取請求頭的值
-
User-Agent:瀏覽器告訴服務(wù)器,我訪問你使用的瀏覽器版本信息
* 可以在服務(wù)器端獲取該頭的信息,解決瀏覽器的兼容性問題2. Referer:http://localhost/login.html * 告訴服務(wù)器,我(當(dāng)前請求)從哪里來? * 作用: 1. 防盜鏈: 2. 統(tǒng)計工作:
HTTP
1.* 概念:Hyper Text Transfer Protocol 超文本傳輸協(xié)議
* 傳輸協(xié)議:定義了,客戶端和服務(wù)器端通信時,發(fā)送數(shù)據(jù)的格式
* 特點:
1. 基于TCP/IP的高級協(xié)議
2. 默認(rèn)端口號:80
3. 基于請求/響應(yīng)模型的:一次請求對應(yīng)一次響應(yīng)
4. 無狀態(tài)的:每次請求之間相互獨立,不能交互數(shù)據(jù)
- 請求方式:
* HTTP協(xié)議有7中請求方式,常用的有2種
* GET:
1. 請求參數(shù)在請求行中,在url后。
2. 請求的url長度有限制的
3. 不太安全
* POST:
1. 請求參數(shù)在請求體中
2. 請求的url長度沒有限制的
3. 相對安全