一、HttpServletRequest
HttpServletRequest------------>封裝對象的請求信息,瀏覽器發(fā)出
HttpServletresponse<------------封裝服務(wù)器的響應(yīng)信息,服務(wù)器發(fā)出
1.Request對象學(xué)習(xí):
服務(wù)器在接收到請求后,會給此次請求創(chuàng)建-個request對象,此對象中封存了此次請求相關(guān)的數(shù)據(jù)
作用:存儲請求數(shù)據(jù)
注意:每次請求都會創(chuàng)建新的request對象存儲請求數(shù)據(jù)
2.Request對象特點
由服務(wù)器創(chuàng)建
一次請求創(chuàng)建一個Request對象
生命周期為一次請求內(nèi),請求結(jié)束即銷毀此次請求的Request對象
3.Request獲取請求數(shù)據(jù)
請求行:請求方式 請求 URL協(xié)議
getMethod(): 返回請求方式
getRequestUrl(); 返回請求url
getRequestUri(); 返回請求uri
getRequestUrl(); 返回請求url
getQueryString():返回get請求中的URL中的用戶數(shù)據(jù)
注意: post請求中沒有此方法
getSchema(); 返回協(xié)議
請求頭
getHeader(String name) 根據(jù)鍵名獲取請求頭信息
注意:如果獲取的請求頭信息不存在返回nu11。
getHeaderNames()返回存儲了請求頭鍵名的枚舉集合
3.請求實體
getParameter(String name)根據(jù)鍵名獲取數(shù)據(jù)
注意:鍵名其實就是前端頁面中的表單標(biāo)簽的name屬性的值或者前端頁面其他方式提交數(shù)據(jù)的鍵的名字如果請求中沒有對應(yīng)的請求數(shù)據(jù),則返回null。
getParameterValues (String name) 根據(jù)鍵名獲取同名不同的值,返回數(shù)組
注意:如果沒有對應(yīng)的鍵名,則返回null
二、HttpServletResponse
4.response處理響應(yīng)
設(shè)置響應(yīng)行:協(xié)議 狀態(tài)碼 狀態(tài)消息
resp.sendError(int status);
作用:可以自主的響應(yīng)狀態(tài)給瀏覽器設(shè)置響應(yīng)頭
addHeader(String name , String value) 添加響應(yīng)頭信息,同名數(shù)據(jù)不會覆蓋
setHeader(String nanme,String value) 設(shè)置響應(yīng)頭信息,會覆蓋原有信息。如果沒有此響應(yīng)頭則添加該信息。
5.請求網(wǎng)絡(luò)相關(guān)數(shù)據(jù)
getRemoteAddr() 獲取客戶端的IP地址
getRemotePort() 獲取客戶端端口號
getLocalAddr() 獲取服務(wù)器端的ip
getLocalPort() 獲取服務(wù)器端的端口號
getParameterNames() 返回實體數(shù)據(jù)中鍵名的枚舉
三、亂碼問題
6.請求亂碼問題:服務(wù)器獲取的請求數(shù)據(jù)亂碼
1).post請求方式亂碼:
req.setCharacterEncoding("utf-8");
2).get請求亂碼方式解決:
方式一:毎個數(shù)據(jù)都要単獨的迸行裝換
String uname=req.getParameter("uname");
String uname2=new String(uname.getBytes("iso-8859-1"),"utf-8");
方式二:
req.setCharacterEncoding("utf-8");
在tomcat的server.xml文件中的Connector標(biāo)簽中増加屬性: useBodyEncodingForURI= "true"
7.如何解決響應(yīng)數(shù)據(jù)亂碼
resp.setContenType(“text/html;charset=utf-8”);
8.service代碼編寫流程:
設(shè)置請求編碼格式
設(shè)置響應(yīng)編碼格式
獲取請求信息
處理請求信息
響應(yīng)處理結(jié)果
9.請求轉(zhuǎn)發(fā)
1.為什么需要請求轉(zhuǎn)發(fā)?
一次請求的處理需要多個Servlet的聯(lián)動操作,第一個Servlet需要用到其他Servlet已經(jīng)聲明的邏輯處理代碼
2.請求轉(zhuǎn)發(fā)的本質(zhì)是什么?
其實就是在一個Servlet中調(diào)用其它的Servlet
3.請求轉(zhuǎn)發(fā)的特點
1. 降低Servlet之間代碼冗余
2. 一次請求轉(zhuǎn)發(fā)內(nèi)的Servlet共享此次請求的request和response對象
3. 瀏覽器地址信息不改變,一次請求
4.使用request對象作為請求轉(zhuǎn)發(fā)的數(shù)據(jù)的載體的方法是什么?(存儲和獲?。?br>
setAttribute方法 服務(wù)器接收到瀏覽器發(fā)送的請求后,服務(wù)器把下次請求可能會用到的數(shù)據(jù)進(jìn)行聲明響應(yīng)給瀏覽器,瀏覽器進(jìn)行存儲,在下次發(fā)送請求時進(jìn)行附帶
getAttribute
10.重定向
作用:保護(hù)第一次的請求,避免因為用的刷新動作頻繁的觸發(fā)A的執(zhí)行
特點:兩次請求,地址欄信息改變
11.cookie
(1)簡要說明為什么需要cookie
不同的請求使用相同的請求數(shù)據(jù),但是請求只要結(jié)束數(shù)據(jù)就被銷毀了,其他請求需要將公共數(shù)據(jù)重新書寫發(fā)送
(2)cookie的特點是什么
1.瀏覽器端的數(shù)據(jù)存儲技術(shù)
2.需要被存儲是在服務(wù)器端進(jìn)行聲明,以響應(yīng)的方式告訴瀏覽器進(jìn)行存儲
3.不適合大量數(shù)據(jù)的存儲
編輯于 2019-05-06