HttpServletRequest 参数映射始终为空 [关闭]
Posted
技术标签:
【中文标题】HttpServletRequest 参数映射始终为空 [关闭]【英文标题】:HttpServletRequest parametermap is always empty [closed] 【发布时间】:2021-11-04 02:44:24 【问题描述】:我有一个 Java servlet,当我向它发送一个 POST 请求时,一切正常。问题是,如果发送 GET 请求,我想执行与 POST 请求相同的过程,当我运行 request.getParameterMap() 时 size = 0。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
doPost(request, response);
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
LinkedList<String> lErr = new LinkedList<String>();
System.out.printf("Request size: %d%n", request.getContentLength());
System.out.printf("Request method: %s%n", request.getMethod());
Map map = request.getParameterMap();
System.out.printf("ParameterMap size: %d%n", map.size());
可能是什么问题?
POST 和 GET 请求的正文中都有数据。我使用表单数据发送它,因为 getParameterMap() 不仅支持查询字符串,而且还支持。 POST 请求工作正常。
【问题讨论】:
根据您提供的信息,我会说您没有在 URL 查询字符串中提供任何参数。 请阅读***.com/questions/3477333/… “问题是,如果发送一个 GET 请求,我想做与 POST 请求相同的过程”。这是根本错误的。 GET 请求没有正文。参数来自查询字符串 GET 请求中的参数来自 URL 查询部分,而不是来自请求的正文,将被忽略。 【参考方案1】:正如 Joao 和其他一些人所指出的,我被告知做这些事情的方式是错误的。 GET 请求忽略它们的主体,因此参数映射值来自查询字符串而不是主体。因此,如果没有通过查询字符串但在 GET 请求中的表单数据中进行,则参数映射大小将为 0。谢谢你们!
事情将开始正确使用doGet()
方法,而不仅仅是将该参数传递给doPost()
。
我太专注于这项任务,以至于我什至无法正确思考。
【讨论】:
以上是关于HttpServletRequest 参数映射始终为空 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
如何向我的 Java Servlet 的现有 HttpServletRequest 添加参数?