Servlet學(xué)習(xí)(二)

一、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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、請求的方式 1.地址欄輸入 2.超鏈接 3.Form表單 4.ajax,異步無刷新技術(shù) 5.請求轉(zhuǎn)發(fā) 6.重定...
    ALEX朱先生閱讀 329評論 1 0
  • 國家電網(wǎng)公司企業(yè)標(biāo)準(zhǔn)(Q/GDW)- 面向?qū)ο蟮挠秒娦畔?shù)據(jù)交換協(xié)議 - 報批稿:20170802 前言: 排版 ...
    庭說閱讀 12,394評論 6 13
  • 這部分主要是與Java Web和Web Service相關(guān)的面試題。 96、闡述Servlet和CGI的區(qū)別? 答...
    雜貨鋪老板閱讀 1,502評論 0 10
  • IOC 控制反轉(zhuǎn)容器控制程序?qū)ο笾g的關(guān)系,而不是傳統(tǒng)實現(xiàn)中,有程序代碼之間控制,又名依賴注入。All 類的創(chuàng)建,...
    irckwk1閱讀 1,093評論 0 0
  • 現(xiàn)在我發(fā)現(xiàn)了一個很普遍的現(xiàn)象,是從我身邊的人身上感受到的。 要知道寶寶是一個很喜歡交朋友,并且也挺喜歡和朋友一塊玩...
    葉落故事匯閱讀 301評論 0 4

友情鏈接更多精彩內(nèi)容