4-26获取请求体数据 只有post方式时有

注意这里保险点就是action写全路径就不用管别的了

注意一个问题 html中表单的action

这里的action中只写了/demo08

注意要跟运行的编辑配置中对应

如果划线地方只有 http://localhost:80/ 则action应该写/day22/demo08

注意这个地方 好好想想

* 请求体:只有POST请求方式,才有请求体,在请求体中封装了POST请求的请求参数

方法步骤:

         1. 获取流对象
                    *  BufferedReader getReader():获取字符输入流,只能操作字符数据

2. 再从流对象中拿数据

 

 代码:

package cn.itcat.web.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;

@WebServlet("/demo09")
public class RequestDemo09 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
         //获取请求体(其实就是post方式时获取请求参数)
        //1.获取字符流
        BufferedReader br = request.getReader();
        //2.读取数据
        String line=null;
        while((line=br.readLine())!=null){
            System.out.println(line);
        }
    }

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

    }
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以使用以下Java代码从HttpServletRequest对象中获取POST请求: ``` // 获取请求长度 int contentLength = request.getContentLength(); // 创建字节数组来保存请求数据 byte[] requestBodyData = new byte[contentLength]; // 读取请求数据到字节数组 ServletInputStream inputStream = request.getInputStream(); int totalBytesRead = 0; while(totalBytesRead < contentLength) { int bytesRead = inputStream.read(requestBodyData, totalBytesRead, contentLength - totalBytesRead); if(bytesRead == -1) { break; } totalBytesRead += bytesRead; } // 将字节数组转换成字符串 String requestBody = new String(requestBodyData, "UTF-8"); ``` 在这个示例代码中,我们首先从HttpServletRequest对象中获取请求长度,然后创建一个字节数组来保存请求数据。接着,我们使用ServletInputStream对象从请求中读取数据,并将其存储在字节数组中。最后,我们将字节数组转换成字符串,以便在后续代码中进行处理。请注意,在这个示例代码中,我们假设请求使用UTF-8编码。如果请求使用其他编码,则需要相应地更改代码。 ### 回答2: 从HttpServletRequest对象获取POST请求可以通过以下步骤完成: 1. 首先,确保添加了javax.servlet-api依赖包到项目中,以便使用HttpServletRequest类。 2. 在Servlet的doPost或doPut方法中,接收HttpServletRequest对象作为方法参数。 3. 使用HttpServletRequest对象的getInputStream方法,获取来自客户端的请求输入流。代码示例如下: ``` InputStream inputStream = request.getInputStream(); ``` 4. 在获取请求输入流后,我们可以使用IO流的方式来读取POST请求的内容。例如,使用BufferedReader读取输入流内容。代码示例如下: ``` BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; StringBuilder stringBuilder = new StringBuilder(); while ((line = reader.readLine()) != null) { stringBuilder.append(line); } String requestBody = stringBuilder.toString(); ``` 5. 最后,你可以通过requestBody变量来获取POST请求的内容。你可以根据实际情况对请求进行解析、处理或存储。 需要注意的是,如果请求较大或需要多次读取请求内容,可以使用缓冲流、字符流等方式进行读取和处理。 希望以上回答能够帮助到你,如果还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值