Request
1.擷取請求行
2.擷取請求頭
3.擷取請求體
4.請求轉發
01擷取請求行
請求行資訊

包含請求方式、URL、版本
擷取請求方式
String method = request.getMethod();
擷取請求資源(URL、URI)
// "http://localhost:8080/request/Request" StringBuffer url = request.getRequestURL();
// "/request/Request" StringBuffer url = request.getRequestURL();
/* url包含請求的從主機到目前檔案 uri隻包含從項目下到目前檔案*/
擷取項目名
//"/request"String contextPath = request.getContextPath();
擷取get查詢參數
//"name=hs&sex=man"String queryString = request.getQueryString();
02擷取請求頭
請求頭都是以鍵值對或者叫entry形式存在的資訊
擷取所有的請求頭名稱
Enumeration<String> headerNames = request.getHeaderNames();while(headerNames.hasMoreElements()) { System.out.println(headerNames.nextElement());}
擷取指定請求頭名稱的值
String header = request.getHeader("Host");
通過上面就可以進一步列印所有請求名稱并對應的值
Enumeration<String> headerNames = request.getHeaderNames();while(headerNames.hasMoreElements()) { String headername = headerNames.nextElement(); String headvalue = request.getHeader(headername); System.out.println(headername+":"+headvalue);}
請求頭中有一個叫referer的它的值表示上一個頁面的URL,當從一個頁面跳轉到目前頁面,那麼目前頁面的請求頭的referer的值就表示從哪個頁面過來的
03擷取請求體
請求體包含在請求時傳入的參數
在一些靜态頁面定義的參數,請求傳入。在程式中擷取
擷取一個值
String value = request.getParameter("name");
擷取多個值(當一個參數含多個值)
比如上圖的like參數
String[] values = request.getParameterValues("like");
擷取所有的請求參數名
Enumeration<String> names = request.getParameterNames();while(names.hasMoreElements()) { System.out.println(names.nextElement());}
擷取所有請求參數
Map<String,String[]> parameterMap = request.getParameterMap();for(Map.entry<String,String[]> entry : parameterMap.entrySet()){ System.out.println(entry.getkey()+":"+Arrays.toString(entry.getValue()));}
04請求轉發
請求轉發與重定向的差別
重定向
- 找servlet1,通過設定響應,告訴浏覽器, 再讓浏覽器發送請求到servlet2
- 發兩次請求
- 位址欄會發生變化
請求轉發
- 請求轉發隻需要發送一次直接,找servlet1,在servlet1當中直接轉發給servlet2,不要再告訴浏覽器
- 隻發送一次請求
- 浏覽器位址欄當中還是servlet1,不會發生變化
設定請求轉發
//獲得轉發器,設定轉發到哪個RequestDispatcher rd = request.getRequestDispatcher("url");//調用轉發器轉發,傳入目前的servlet收到的請求與響應對象給轉發的servlerd.forward(request,response);
并且在一個servlet中用request設定的Attribute鍵值對,在轉發後的servlet也能獲得。也就是說轉發後的servlet得到的request,response對象是最開始請求建立的資訊加上在之前servlet添加後的資訊。而不是僅僅把它自己獲得的這兩個對象傳給轉發的
它,