HttpServletRequest類
service方法中的request的類型是ServletRequest,而doGet/doPost方法的request的類型是HttpServletRequest,
HttpServletRequest是ServletRequest的子接口,功能和方法更加強大,
通過request獲取請求行
獲得客戶端的請求方式:
獲取頁面地址
String getRequestURI();
獲取web名稱
String getContextPath();
通過request獲取請求頭
獲取請求頭
String getHeader(String name);
通過request獲得請求體
獲取參數
String getParameter(string name);
//獲取一個name多個值
String【】 hobys=request.getParameterValues();
獲取所有請求的參數值
Map<String.String[]> map=request.getParameterMap();
Map<String ,String[]> map=request.getParameterMap();
//遍歷
Set<String > set=map.keyset();
for(String s:set){
sysout(s+"")
String[] str=map.get(s);
for(String ss:str){
sysout(ss+"")
}
}
request的其他功能
request是一個域對象
setAttribute(String name, Object o)
getAttribute(String name)
removeAttribute(String name)
請求轉發
獲得請求轉發器----path是轉發的地址
RequestDispatcher getRequestDispatcher(String path)
通過轉發器對象轉發
requestDispathcer.forward(ServletRequest request, ServletResponse response)
中文轉碼
request.setcharacterEncoding("UTF-8");
轉發與重定向的區別?
1)重定向兩次請求,轉發一次請求
2)重定向地址欄的地址變化,轉發地址不變
3)重新定向可以訪問外部網站 轉發只能訪問內部資源
4)轉發的性能要優於重定向
注意:客戶端地址與服務器端地址的寫法?
客戶端地址:
是客戶端去訪問服務器的地址,服務器外部的地址,特點:寫上web應用名 稱
直接輸入地址:
重定向
服務器端地址:
服務器內部資源的跳轉的地址,特點:不需要寫web應用的名稱
轉發
