HttpServletRequest


1.HttpServletRequest概述

我們在創建Servlet時會覆蓋service()方法,或doGet()/doPost(),這些方法都有兩個參數,一個為代表請求的request和代表響應response。

service方法中的request的類型是ServletRequest,而doGet/doPost方法的request的類型是HttpServletRequest,HttpServletRequest是ServletRequest的子接口,功能和方法更加強大。

 

2.request的運行流程

 


 

3.通過抓包工具抓取Http請求

 


因為request代表請求,所以我們可以通過該對象分別獲得Http請求的請求行,請 求頭和請求體

4.通過request獲得請求行

獲得客戶端的請求方式:String getMethod()

獲得請求的資源:

String getRequestURI()

StringBuffer getRequestURL()

String getContextPath() ---web應用的名稱

String getQueryString() ---- get提交url地址后的參數字符串

username=zhangsan&password=123

 

注意:request獲得客戶機(客戶端)的一些信息

request.getRemoteAddr() --- 獲得訪問的客戶端IP地址

 

5.通過request獲得請求頭

long getDateHeader(String name)

String getHeader(String name)

Enumeration getHeaderNames()

Enumeration getHeaders(String name)

int getIntHeader(String name)

 

referer頭的作用:執行該此訪問的的來源

做防盜鏈

 

6.通過request獲得請求體

請求體中的內容是通過post提交的請求參數,格式是:

username=zhangsan&password=123&hobby=football&hobby=basketball

key ---------------------- value

username                    [zhangsan]

password                    [123]

hobby                         [football,basketball]

                       

 

以上面參數為例,通過一下方法獲得請求參數:

String getParameter(String name)

String[] getParameterValues(String name)

Enumeration getParameterNames()

Map<String,String[]> getParameterMap()

 

 

      注意:get請求方式的請求參數 上述的方法一樣可以獲得

 

      解決post提交方式的亂碼:request.setCharacterEncoding("UTF-8");

      解決get提交的方式的亂碼:

            parameter = new String(parameter.getbytes("iso8859-1"),"utf-8");

 

7.request的其他功能

(1)request是一個域對象

request對象也是一個存儲數據的區域對象,所以也具有如下方法:

setAttribute(String name, Object o)

getAttribute(String name)

removeAttribute(String name)

 

注意:request域的作用范圍:一次請求中

(2)request完成請求轉發

獲得請求轉發器----path是轉發的地址

RequestDispatcher getRequestDispatcher(String path)

通過轉發器對象轉發

requestDispathcer.forward(ServletRequest request, ServletResponse response)

 

           

            注意:ServletContext域與Request域的生命周期比較?

         ServletContext

            創建:服務器啟動

            銷毀:服務器關閉

            域的作用范圍:整個web應用

         request

            創建:訪問時創建request

            銷毀:響應結束request銷毀

            域的作用范圍:一次請求中

 

            注意:轉發與重定向的區別?

         1)重定向兩次請求,轉發一次請求

         2)重定向地址欄的地址變化,轉發地址不變

         3)重新定向可以訪問外部網站轉發只能訪問內部資源

         4)轉發的性能要優於重定向

        


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM