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 添加参数?

HttpServletRequest常用获取URL的方法

黑马程序员javaweb教程:HttpServletRequest获取参数.doc

Kendo 数据源参数映射

HttpServletRequest获取请求参数

更改 httpservletrequest 参数然后传递请求 [重复]