我正在调试向servlet发出请求的客户端AJAX问题。但该错误最终是在服务器端。您可以参考我原来的问题here。通过与更有经验的人的讨论,我发现servlet正在使用request.getAttribute()方法从请求而不是getParameter()中检索参数。所以我想开一个新问题来澄清我的怀疑。
现在我的问题是:如果我使用GET方法将参数从客户端传递到服务器,Servlet中的getAttribute()工作正常,我可以得到参数值。但是当我使用POST方法时,getAttribute()返回null。为什么它适用于GET而不适用于POST?
答案 0 :(得分:3)
当属性来自GET或POST方法时,您应始终使用getParameter。当请求从另一个servlet / jsp转发时使用getAttribute。如:
ServletA:
request.setAttribute("test","value")
request.getRequestDispatcher("/ServletB").forward(request, response)
ServletB:
request.getAttribute("test") <-- you can get test attribute by using getAttribute
答案 1 :(得分:0)
现在我的问题是:如果我使用GET方法将参数从客户端传递到服务器,Servlet中的getAttribute()工作正常,我可以得到参数值。但是当我使用POST方法时,getAttribute()返回null。为什么它适用于GET而不适用于POST?
完全废话。您显然正在处理现有项目,该项目包含许多其他现有的servlet和过滤器。我的意思是请求 - 响应链中有另一个过滤器,它将请求参数映射到请求属性,这是出于某些非显而易见的原因。
请创建一个空白的游乐场项目并创建一个游乐场servlet,以便在现有项目中没有任何噪音的情况下更好地熟悉servlet。