1. 程式人生 > >說一下Servlet裏面得request和response

說一下Servlet裏面得request和response

getmethod oca value 參數 緩存 地址 map () 封裝

當一個servlet被調用的時候,我們一般繼承帶協議的httpServlet,大方向上是下圖這樣

技術分享

在這裏面request和response起了什麽作用呢?

技術分享

來細究一下。

request:
1.封裝了客戶端所有的請求數據:

請求行,請求頭,請求體(get沒體)

2.而當涉及到http協議時,我們還可以利用request獲取協議的信息:

獲取客戶端ip:request.getRemoteAddr()

獲取請求方式:request.getMethod()

獲取http請求頭:

String getHeader(String name) ,適用於單值頭

int getIntHeader(String name),適用於單值int類型的請求頭

long getDateHeader(String name) ,適用於單值毫秒型的請求頭

Enumeration<String> getHeaders(String name) 適用於多只請求頭

獲取請求url

技術分享

getRequestURL():獲取請求url,等於不包含參數的整個請求路徑

getScheme():獲取請求協議

getServerName():獲取服務器名

getServerPort():獲取服務器端口號

getContextPath():獲取項目名

getServletPath():獲取Servlet路徑

getRequestURI():獲取請求URI,等於項目名加Servlet路徑

getQueryString():獲取請求參數

3.獲取請求參數,請求參數有一個值或多個值的。

String getParameter(String name) 獲取單值參數

String[] getParameterValues(String name) 獲取多值參數

Enumeration<String> getParameterNames() 獲取所有參數名

Map<String,String[]> getParameterMap() 獲取所有參數,key為參數名,value為參數值

4.請求轉發和請求包含

需要使用

RequestDispatcher rd=request.getRequestDispatcher(‘‘/MyServlet‘‘);

請求轉發:rd.forward(request,response);

請求包含:rd.include(request,response):

有時候一個客戶端要求分給A和B兩個Servlet幹同一件事,但是A和B都做不了,A是怎麽做的呢,他和C說,我把這件事給你做,我設置設置響應頭,你把響應體給我寫了,你別告訴頭,然後C做完了把響應體返回給A,A就拿著去交差了,這就是請求轉發;而B呢,他會和C說,我自己做不了這件事,你和我一起做吧,我把響應頭和響應體分分,你寫一些我寫一些,兩者一起做完了,B拿著去交差了,這就是請求包含。

技術分享

技術分享

5.request域

在同一個請求內使用request.setAttribute(),request.getAttribute()來傳值,前一個存,後一個取。

response

涉及到http協議時,

1.可以通過response發送狀態碼:200(成功),404(資源未找到),302(轉發重定向,會伴著一個URL一起發送回去),304(瀏覽器有緩存),500(服務器端錯誤)

response.sendErr(int sc)

response.sendErr(int sc,String ms)

response.setStatus(int sc)

2.響應頭

response.setHeader(String name,String value)

response.addHeader(String name,String value)

response.setIntHeader(String name,int value)

response.addIntHeader(String name,int value)

response.setDateHeader(String name,long value)

response.addDateHeader(String name,long value)

3.respone的兩個流

ServletOutputStream:用來向客戶端發送字節數據

PrintWriter:用來向客戶端發送字符數據,需要設置編碼

4.重定向

respone.sendRedirect("地址") 重定向

相當於

response.setHeader("Location","地址");

response.setStatus(302);

說一下Servlet裏面得request和response