HttpRequest(http請求類)


HttpServlet類的請求處理方法(doGetdoPost …)有2個參數。

  • javax.servlet.http.HttpRequest
  • javax.servlet.http.HttpResponse

例如,下面是HttpServlet.doGet()方法的聲明,可以看到有上面提到的2個參數

protected void doGet(
    HttpServletRequest request,
    HttpServletResponse response)
      throws ServletException, IOException {

}

接下來主要去了解HttpRequest類

簡介

HttpRequest類表示瀏覽器向web服務端發送的HTTP請求,瀏覽器發送的任何內容都可以通過HttpRequest訪問。

service方法中的request的類型是ServletRequest,而doGet/doPost方法的request類型HttpServletRequest,HttpServletRequest是ServletRequest的子接口。

運行流程

burp抓包(post請求)

獲得請求行

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

String getContextPath()   web應用的名稱

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

獲得請求頭

請求頭是瀏覽器發送請求時的頭部信息,包含了一組名/值對,向服務端提供了諸如瀏覽器軟件版本,接受文件類型等信息。

可以從HttpRequest中訪問請求頭:

String contentLength = request.getHeader("Content-Length");     從請求頭中讀取瀏覽器發送的內容長度。

獲得請求體

如果瀏覽器發送一個HTTP POST請求,請求參數可放在請求體中。實際上請求體中可以放任何數據,如JSON數據。

要訪問HTTP POST的請求體,可通過從HttpRequest中獲得InputStream,從中讀取請求體數據:

InputStream requestBodyInput = request.getInputStream();  
String getParameter(String name) 

String[] getParameterValues(String name)

Map<String,String[]> getParameterMap()

亂碼問題

解決post提交方式的亂碼:

request.setCharacterEncoding("UTF-8");

解決get提交的方式的亂碼:
parameter = new String(parameter.getbytes("iso8859-1"),"utf-8");

完成請求轉發

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

RequestDispatcher getRequestDispatcher(String path)

2、通過轉發器對象轉發

requestDispathcer.forward(ServletRequest request, ServletResponse response)

借鑒於:https://blog.csdn.net/weixin_43705313/article/details/101191085


免責聲明!

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



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