Http get请求url中的参数和post请求中的body数据存放在哪里了?后台怎么获取?getParameter()作用最本质解释。

本文解析了ServletRequest中getParameter()方法的功能,详细介绍了此方法如何获取GET请求的querystring和POST请求的body数据,以及这些数据是如何由Tomcat处理并存储的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

相信很多人都和我有一样的困惑,ServletRequest中getParameter()方法到底取的是什么参数,这些参数又是怎么放进去的,本文简单的回答一下该问题:

首先话不多说,我们来看一下该方法的官方说明:

Returns the value of a request parameter as a String, or null if the parameter does not exist. Request parameters are extra information sent with the request. For HTTP servlets, parameters are contained in the query string or posted form data.

其实核心的一句话就是query string or posted form data,认真三遍这几个单词,此时大家是否已恍然大悟,也就是说getParameter()方法取的是query string 和 posted form data中的数据,那么query string 和 posted form data又是指的啥呢?query string就是get请求中url的?后面的参数,posted form data就是post请求中的body数据,哈哈哈,到现在是不是觉得很有点感觉了;大家平时都是用的ajax请求,无论是get还是post,我们的请求参数都是可以放在data里的,只不过ajax会判断请求类别,如果是get请求的话,ajax会把data里的值给拼接到url的后面。

好了,上面说了getParameter()方法取的是什么数据的问题,那么这些数据又是怎么放进去的呢?我相信每个爱思考的人都会想过这个问题,可能百思不得其解。那我来告诉大家这些参数是tomcat放进去的,是不是有点小懵逼,tomcat又是怎么放进去的呢,大家都知道tomcat是个容器,我们的http请求是会先经过tomcat进行处理的,它会分析http请求中的请求行、请求头、数据三部分然后分别将其放到对应的位置中,这样我们后台就可以根据getParameter(),getHeader()等方法进行取值了。好了,我相信很多人都不知道http的请求消息格式是什么样子的,比如我上面说的请求行、请求头、数据这三部分大家只是印象中好像有那么几个概念,但是并不知道这是http协议中所规定的,所以我建议大家好好去了解一下http协议,这样才会对系统的交互流程有着最本质的了解。

看到这,大家可能会想问tomcat具体是怎么处理的呢,哈哈哈,这个就需要去看tomcat的源码了。

在Java Servlet中处理GETPOST请求是通过重写`doGet``doPost`方法来实现的。这两个方法分别用于处理HTTP GETPOST请求。以下是一个简单的示例,展示了如何在Servlet中处理这两种请求: ```java import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @WebServlet("/example") public class ExampleServlet extends HttpServlet { private static final long serialVersionUID = 1L; // 处理GET请求 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8"); // 输出响应内容 PrintWriter out = response.getWriter(); try { out.println("<html><body>"); out.println("<h2>GET请求处理</h2>"); out.println("<p>这是一个GET请求的响应。</p>"); out.println("</body></html>"); } finally { out.close(); } } // 处理POST请求 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 设置响应内容类型 response.setContentType("text/html;charset=UTF-8"); // 获取请求参数 String param = request.getParameter("param"); // 输出响应内容 PrintWriter out = response.getWriter(); try { out.println("<html><body>"); out.println("<h2>POST请求处理</h2>"); out.println("<p>接收到的参数值: " + param + "</p>"); out.println("</body></html>"); } finally { out.close(); } } } ``` 在这个示例中: 1. `doGet`方法处理GET请求。它设置响应内容类型并输出一个简单的HTML页面。 2. `doPost`方法处理POST请求。它首先获取请求参数,然后设置响应内容类型并输出一个包含参数值的HTML页面。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值