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
例子:
URI:統一資源識別符號 共和國
URL:統一資源定位符 中華人民共和國
6.獲取協議及版本:HTTP/1.1
*String getProtocol()
7.獲取客戶機的IP地址:
*String getRemoteAddr()
2.獲取請求頭資料
*方法:
***String getHeader(String name);通過請求頭的名稱獲取請求頭的值
//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表示式
&n