ServletRequest:
定義將客戶端請求信息提供給某個 servlet 的對象;servlet 容器創建 ServletRequest 對象,並將該對象作為參數傳遞給該servlet的service方法 ;
通過文檔閱讀可以看到HttpServletReuqest不是相關請求的頂級接口,它繼承自父接口——ServletRequest:
HttpServletRequest對象代表客戶端的請求,當客戶端通過HTTP協議訪問服務器時,HTTP請求中的所有信息都封裝在這個對象中,開發人員通過這個對象的方法,可以獲得客戶這些信息;
-
- 獲取客戶機信息
- 獲取請求頭信息
- 獲取請求參數
- 利用請求域傳遞對象
-
獲取請求行信息
-
API介紹
String getMethod() 獲取請求方式的類型 String getRequestURI() 獲取請求行中的資源名部分:/項目名/資源名 StringBuffer getRequestURL() 獲取客戶端發出請求完整URL 如http://localhost:8080/項目名:資源名 注: uri: 統一資源標識符,用來標識一個資源,資源路徑(相當於身份證) url: 統一資源定位符,是一種具體的URI,可以用來標識一個資源.並且指明了如何定位一個資源(相當於身份證中的地址) String getProtocol() 獲取當前協議的名稱和版本 String getRemoteAddr() 獲取客戶端的IP地址
-
獲取請求頭信息
-
API介紹
-
String getHeader(String name) 以String 的形式返回指定請求頭的值 Enumeration getHeaderNames() 返回此請求包含的所有頭名稱的枚舉
-
獲取請求參數
-
API介紹
String getParameter(String name) 根據表單的name屬性 獲取對應的值 String[] getParameterValues(String name) 獲取name相同的所有value 如復選框 Map getParameterMap() 參數名作為key,參數值作為value,封裝到map中 void setCharacterEncoding(String env) 設置請求體的編碼 注意:獲取請求參數之后,調用setCharacterEncoding方法無效
-
其他作用
-
獲取工程名字
-
API介紹
-
-
String getContextPath() 獲取工程名字
-
-
獲取當前
- API介紹
-
String getServletPath() 獲取獲得客戶端所請求的腳本文件的文件路徑
如果請求路徑是:http://localhost:8080/mytest/demo,request.getContextPath()得到的是:/mytest,request.getServletPath()得到的是:/demo;request.getRequestURI()得到的是:/mytest/demo;request.getRequestURL()得到的是:http://localhost:8080/mytest/demo;
-
-
作為域對象
- 域對象是一個容器,這種容器主要用於servlet與servlet之間的數據傳輸使用的;request域:代表一次請求的范圍,一般用於請求轉發的多個資源中共享數據
- API介紹
-
void setAttribute(String name, Object o) 設置數據到request域 Object getAttribute(String name) 從request域獲取數據 void removeAttribute(String name) 從request域移除數據
-
-
請求轉發
- 一種在服務器內部的資源跳轉方式
- API介紹
- 一種在服務器內部的資源跳轉方式
-
RequestDispatcher getRequestDispatcher(String path) 獲取請求轉發器(request對象方法) void forward(ServletRequest request, ServletResponse response) 將請求轉發到另一個資源(servlet)上(RequestDispatcher對象的方法)
-
-
- 使用步驟
-
1. 通過request對象獲取請求轉發器對象:RequestDispatcher getRequestDispatcher(String path) 2. 使用RequestDispatcher對象來進行轉發:forward(ServletRequest request, ServletResponse response)
-
-
- 特點
-
1. 瀏覽器地址欄路徑不發生變化 2. 只能轉發到當前服務器內部資源中 3. 轉發是一次請求