request對象
request對象是來獲取請求消息數據
1. 獲取請求行數據
GET /test/demo1?name=xiaobai HTTP/1.1
獲取請求方式:String getMethod(); GET
***** 獲取虛擬目錄:string getContextPath(); /test
獲取Servlet路徑:String getServletPath(); /demo1
獲取get方式請求參數:String getQueryString(); name=xiaobai
***** 獲取請求URI:
String getRequestURI();URI:統一資源標識符 /test/demo1
StringBuffer getRequestURL();URL:統一資源定位符 http://localhost/test/demo1
獲取協議及版本:String getProtocol(); HTTP/1.1
獲取客戶機的IP地址:String getRemoteAddr();
2. 獲取請求頭數據
*** String getHeader(String name) 通過請求頭的名稱,來獲取 請求頭的值;
防盜鏈:request.getHeader("referer");
Enumeration<String> getHeaderNames() 獲取所有的請求頭名稱
3. 獲取請求體數據
請求體:只有POST請求方式才有請求體,在請求體中封裝了POST請求的請求參數
獲取流對象:
獲取字符輸入流,只能操作字符數據 BufferedReader getReader()
獲取字節輸入流,可以操作所有類型數據 ServletInputStream getInputStream()
BufferedReader br = request.getReader();
string line = null;
while((line = br.readLine()) != null){
System.out.println(line);
}
4. 獲取請求參數通用方式:
**** String getParameter(String name) 根據參數名稱獲取參數值
String[] getParameterValues(String name) 根據參數名稱獲取參數值的數組
Enumeration<String> getParameterNames() 獲取所有請求的參數名稱
**** Map<String,String[]> getParameterMap() 獲取所有參數的map集合
5.解決中文亂碼:
get方式:tomcat8以后已經將get亂碼解決了;
post方式:在獲取參數前,設置request的編碼request.setCharacterEncoding("utf-8");
6. 請求轉發:
1. 通過request對象獲取請求轉發器對象:RequestDispatcher getRequestDispatcher(String path);
2. 使用RequestDispatcher對象來進行轉發:forward(ServletRequest request, ServletResponse response) ;
RequestDispatcher getRequestDispatcher(String path).forward(ServletRequest request, ServletResponse response) ;
轉發特點:
1 瀏覽器地址欄路徑不發生變化;
2 只能轉發到當前服務器內部資源中;
3 轉發是一次請求。
7.共享數據:轉發前存儲數據到request獄中
域對象:一個有作用范圍的對象,可以在范圍內共享數據;
request域:代表一次請求的范圍,一般用於請求轉發的多個資源中共享數據;
A: void setAttribute(String name,Object obj):存儲數據;
B: Object getAttitude(String name):通過鍵獲取值;
void removeAttribute(String name):通過鍵移除鍵值對
8.獲取ServletContext
ServletContext getServletContext();
擴展
成員變量:
屬性:setter 和getter方法截取后的產物;
java中BeanUtils 的方法
setProperty()
getProperty()
populate(Object obj , Map map) 將map集合的鍵值對信息,封裝到對應的JavaBean對象中
