Java servlet : request. getParameter() 从 POST 请求中的查询字符串返回一个参数

标签 java servlets post parameters

我目前正在开发一个在 Glassfish 4 下运行的 Servlet。 我实现了 doPost() 方法,我需要确保参数是使用 POST 正文传递的,而不是在查询字符串中。

我写了一个测试实现来检查它:

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

    String name = request.getParameter("name");

    response.getOutputStream().print(name);
}

如果我使用带有此 url 的 POST 调用我的页面:

http://localhost:8080/myservlet/testservlet

name=Nico传入post body,返回值Nico,没问题。

现在如果我这样调用它:

http://localhost:8080/myservlet/testservlet?name=Robert

我仍然在 POST 正文中传递 name=Nico,返回 Robert,并且 name=Nico 被忽略。

我只是想避免在 URL 中传递参数。
有没有一种方法可以显式地从 POST 正文而不是正文 + 查询字符串中检索参数?

最佳答案

检查 getParameter 方法的 javadoc:

https://tomcat.apache.org/tomcat-7.0-doc/servletapi/javax/servlet/ServletRequest.html#getParameter%28java.lang.String%29

如前所述,您在请求中发送了 2 个同名参数,一个来自查询字符串,另一个来自正文。

现在由您来验证没有参数来自查询字符串或直接从请求正文中读取值。

关于Java servlet : request. getParameter() 从 POST 请求中的查询字符串返回一个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24649476/

相关文章:

javascript - 如何从 jSTL foreach 到 jQuery 访问变量值

java - 如何实现 PushCacheFilter

php - mysql 和 php 命令有时无法发布。难道是我 body 的原因?

java - Windows 下的 FileHandler Java

java - 从 hashmap 中选择第一个键满足 if 语句

java - 严重 : Allocate exception for servlet <myservlet-name> java. lang.ClassNotFoundException:<myservlet> 异常

post - HTTP 发布请求 : 401 (Unauthorized)

java - 在 1 个 ImageButton 上同时使用 OnTouchListener 和 OnClickListener

javascript - 如何使用 Java 中的等效代码在 NodeJs 中将 MD5 与 BigInt MD5 哈希转换为字符串格式

jquery - 为什么 $.post() 受同源策略约束,但使用方法 ='POST' 提交表单可以?