我目前正在开发一个在 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:
如前所述,您在请求中发送了 2 个同名参数,一个来自查询字符串,另一个来自正文。
现在由您来验证没有参数来自查询字符串或直接从请求正文中读取值。
关于Java servlet : request. getParameter() 从 POST 请求中的查询字符串返回一个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24649476/