天天看點

Request

Request

1.擷取請求行

2.擷取請求頭

3.擷取請求體

4.請求轉發

01擷取請求行

請求行資訊

Request

包含請求方式、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();           
Request

02擷取請求頭

Request

請求頭都是以鍵值對或者叫entry形式存在的資訊

擷取所有的請求頭名稱

Enumeration<String> headerNames = request.getHeaderNames();while(headerNames.hasMoreElements()) {    System.out.println(headerNames.nextElement());}           
Request

擷取指定請求頭名稱的值

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擷取請求體

請求體包含在請求時傳入的參數

Request

在一些靜态頁面定義的參數,請求傳入。在程式中擷取

擷取一個值

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添加後的資訊。而不是僅僅把它自己獲得的這兩個對象傳給轉發的

Request

它,