javaweb入門-----request與response的作用


request對象和request對象的原理

 

  1.request和response對象request對象和request對象的原理時由服務器創建的,我們來使用它們

  2.request對象是來獲取請求消息,response對象是來設置響應消息

 

requset對象繼承體系結構:
ServletRequest -- 接口
    | 繼承
HttpServletRequest -- 接口

 

request功能:


1.獲取請求行數據
*GET /day14/demo1?name=zhangsan HTTP/1.1
*方法
1. 獲取請求方式:GET
*String getMethod()


**2.獲取虛擬目錄:/day14
*String getContextPath()


3.獲取Servlet資源路徑:/demo1
*String getServletPath()


4.獲取get方式的請求參數:name=zhangsan
*String getQueryString()


**5.獲取請求URI:/day14/demo1
*String getRequestURI(); /day14/demo1
*StringBuffer getRequestURL(): http://localhost/day14/demo1

例子:
URI:統一資源標識符 共和國
URL:統一資源定位符 中華人民共和國


6.獲取協議及版本:HTTP/1.1
*String getProtocol()


7.獲取客戶機的IP地址:
*String getRemoteAddr()

2.獲取請求頭數據
*方法:
***String getHeader(String name);通過請求頭的名稱獲取請求頭的值
*Enumeration<String> getHeaderNames();獲取所有的請求頭名稱
//Enumeration 枚舉的一種,想象成迭代器,可以遍歷出數據
3.獲取請求體數據
*請求體:只有post請求方式,才有請求體,在請求體中封裝了post請求的請求參數
*步驟:
1.獲取流對象
* BufferedReader getReader();獲取字符輸入流,只能操作字符數據
* ServletInputStream getInputStream();獲取字節輸入流,可以操作所有類型數據
2.再從流對象中拿數據

 

 

2:主要功能

 

1.獲取請求參數通用方式(無論get或post請求方式都可以使用下列方法獲取請求參數)
1.String getParameter(String name):根據參數名稱獲取參數值
username=zhangsan&pswd=123
2.String[] getParametervalues(String name):根據參數名稱獲取參數值的數組
hobby=study&hobby=game
3.Enumeration<String> getParameterNames():獲取所有請求的參數名稱
4.Map<String,String[]>getParameterMap();獲取所有參數的map集合


**中文亂碼問題 *

get方式:tomcat8 已結將get方式亂碼問題解決了
*post方式:會亂碼 request.setCharacterEncoding("utf-8");

2.請求轉發(包含):一種在服務器內部的資源跳轉方式(例如 servletA 需要用 servletB的資源)
作用:
1.當一個請求需要由多個servlet協作完成時,這時可以使用請求轉發(包含)
2.請求轉發:由后一個servlet響應數據(體),前一個servlet可以設置響應頭(留頭不留體)
3.請求包含:有兩個servlet共同完成響應體,由前一個servlet設置響應頭(留體不留頭)
4.無論請求轉發或包含,都是使用同一個request和response
1.步驟:
1.通過request對象獲取請求轉發器對象:RequestDisspatcher getRequestDisspatcher(String path)
2.使用RequestDisspatcher對象來進行轉發:forward(ServletRequest request, ServletResponse response)
(RequestDisspatcher對象來進行轉發:include 包含的方法)


2.特點:


1.瀏覽器地址欄路徑沒有發生變化
2.只能轉發到當前服務器內部資源中
3.轉發是同一次請求
請求轉發:留頭不留體
請求包含:留體不留頭

 

請求轉發和重定向的區別:


1.請求轉發是一個請求一個響應,重定向是兩次請求兩次響應
2.請求轉發地址欄內容不變,重定向顯示最后一個請求的地址
3.請求轉發只能轉發到本項目中的其他servlet,重定向還可以重定向到其他項目的servlet
4.請求轉發是服務器內轉發,只需寫出要轉發的servlet路徑,重定向要寫出項目名

重定向 response:請求給servlet1 servlet1做不了回應給客戶端,再請求servlet2,servlet2回應
response.sendRedirect("/webrequest/redirect2"); 重定向要加上項目名

 

request作為域時的主要功能:

 

共享數據:
*域對象:一個有作用范圍的對象,可以在范圍內共享數據
*request域:代表一次請求的范圍,一般用於請求轉發的多個資源中共享數據
*方法:
1.void setAttribute(String name, Object obj);存儲數據
2.Object getAttribute(String name);通過鍵獲取值
3.void removeAttribute(String name);通過鍵移除鍵值對

 

 

了解了request和response的基本用法,並且掌握了請求轉發包含與重定向的知識后,就可以明白當請求到來時,servlet是如何處理的。下文將介紹數據轉發到頁面,呈現給用戶是用怎樣的方式,jsp與el表達式

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM