
在如今做Java Web开发的时候, 大家经常会碰到那么一项任务, 就是去取那个HTTP请求里头的那个请求体数据这个东西。因为这个请求体的位置, 通常都会藏着客户端提交过来的各种数据, 比如说表单里面的内容, JSON格式的东西, 或者XML结构的数据之类的。对于咱们用Java写代码的同学来说, 是可以借助一些对象来直接拿到这个请求体数据的。这篇文字接下来就要详细地给大家说说该怎么去操作了, 并且还会把相应的示例代码一并给到, 好让大家能看得更明白一点。HTTP请求的请求体HTTP 请求的请求体这部分内容, 它把客户端提交的那些数据给装起来了。这些数据, 通常会被做成不同的格式来进行编码。比方说, 表单数据、JSON, 还有 XML 这些形式, 都是常见的。这个请求体的具体格式到底长啥样? 它是得看那个请求的内容类型来决定在原文中这里出现了拼写错误为-Type的。当然, 这个请求体里头, 也是可以塞进各种各样的数据的。这就是一个 HTTP 请求里面, 那个请求体的例子。POST /example/path HTTP/1.1Host: www.example.comContent-Type: application/x-www-form-urlencodedContent-Length: 25usernamejohndoepasswordsecret在这个示例里面, 请求体当中是包含了表单数据的, 这些数据是以x-www-form格式来进行编码处理的。我们使用请求体数据的获取方式来对数据进行提取。在Java Web应用里面, 是可以使用某种对象来获取HTTP请求里的请求体数据的, 因为这个对象包含了请求的所有信息, 这些个信息包括了请求行, 还有请求头啊, 以及请求体。以下所呈现的内容, 便是利用对象这一方式, 来进行请求体数据的获取操作的一个具有参考性质的小型示例。import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.BufferedReader;public class RequestBodyInfoServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {response.setContentType(text/html);PrintWriter out response.getWriter();out.println(out.println(Request Body Information);// 获取请求体数据BufferedReader reader request.getReader();String line;while ((line reader.readLine()) ! null) {out.println( line ); } out.println(); } }在这个示例之中, 我们创建了一个对象, 这个对象能够处理HTTP POST请求。我们使用了该对象的特定方法, 用来获取请求体里面的内容数据, 随后将请求体里面的每一行数据进行逐行读取的操作, 并且把所读取到的数据一并显示在了响应信息里面。获取请求体数据的其他方法除了调用方法之外, 大家还能使用别的方法来弄到手请求体里的数据, 具体是用哪个方法, 得看请求体的内容类型是什么样子。下面列举了一些经常会被用到的方法:示例使用获取JSON数据下面是一个例子, 用来展示如何利用对象这个方式, 来获取JSON格式的请求里边的数据的具体的内容。import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.BufferedReader;import com.fasterxml.jackson.databind.ObjectMapper;public class JsonRequestServlet extends HttpServlet {protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {response.setContentType(text/html);PrintWriter out response.getWriter();out.println();out.println(JSON Request Data);// 获取请求体数据BufferedReader reader request.getReader();StringBuilder jsonRequest new StringBuilder();String line;while ((line reader.readLine()) ! null) {jsonRequest.append(line);}// 解析JSON数据ObjectMapper objectMapper new ObjectMapper();try {// 将JSON数据解析为Java对象MyData requestData objectMapper.readValue(jsonRequest.toString(), MyData.class);// 显示解析后的数据out.println(Name: requestData.getName() ); out.println(Age: requestData.getAge() ); } catch (Exception e) { out.println(Error parsing JSON data.); } out.println(); } } class MyData { private String name; private int age; // 省略 getter 和 setter 方法 }在此示例里呢, 我们创建了一个东西, 这个东西是用来去处理那些个HTTP的POST请求的, 然后我们是用了那个对象去拿到的那个JSON格式的请求体的数据, 往后呢是使用了这个库去把JSON数据给解析成了Java的对象, 并在响应里把解析好的数据给显示出来了。结语在处理Java Web开发的相关工作时, 大家经常会碰到一种情况那就是需要去拿到HTTP请求里面的请求体数据这个问题。只要用上对象这样的方法, 工作人员就能够很方便地把请求体里面包含的数据给取出来不管这些数据是表单形式的、Json格式的, 还是其它各种格式的数据都没关系。期望通过看这篇文章, 那些刚刚开始学习相关技术的人都能够把怎么去获取Java环境下的HTTP请求里的请求体数据这个技能, 理解得更透彻一点, 也能在实际应用的时候发挥得更好一些。