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