如何向我的 Java Servlet 的现有 HttpServletRequest 添加参数?

Posted

技术标签:

【中文标题】如何向我的 Java Servlet 的现有 HttpServletRequest 添加参数?【英文标题】:How to add a parameter to the existing HttpServletRequest of my Java Servlet? 【发布时间】:2012-01-22 23:49:56 【问题描述】:

我想在我的HttpServletRequest 的参数映射中添加一个新参数。

以下代码

 request().getParameterMap().put("j_username", user);
 request().getParameterMap().put("j_password", pwd);

产生这个错误

no modifications are allowed to a locked parameter map

这样做的正确方法是什么?

【问题讨论】:

请检查这个链接你的答案在那里:***.com/questions/1413129/… @nIcEcOw 链接断开!谢谢... 【参考方案1】:

请求的参数是浏览器作为参数发送的值。没有理由改变它们。如果您想将某个值与请求相关联,请使用属性而不是参数。这有一个额外的好处,一个属性可以是任何对象,而不仅仅是一个字符串:

request.setAttribute("user", new User(userName, password));

如果您将请求转发到另一个资源,您可以添加参数(尽管我不会说这是一个好习惯):

request.getRequestDispatcher("/some/path?j_username=" + user + "&j_password=" + pwd).forward(request, response);

不过,参数应该正确编码。

【讨论】:

实际上我想在请求中添加参数而不是属性。原因是我正在扩展一些开源应用程序(xwiki)以满足我的需要,它需要请求中的参数,并且它获取的方式是 request.getParameter("paramName");原始请求来自另一个 Web 应用程序,我无法自行设置,因为它不了解它们 那么 mucayufa 提供的链接可能就是你要找的。不过,我认为您无法像这样进行身份验证。 这里有一篇很好的文章:ocpsoft.org/opensource/…【参考方案2】:

我遇到了类似的问题,并通过复制参数映射来解决它。

Map<String, String[]> params = new HashMap<String, String[]>(req.getParameterMap());

【讨论】:

以上是关于如何向我的 Java Servlet 的现有 HttpServletRequest 添加参数?的主要内容,如果未能解决你的问题,请参考以下文章

在 Java Servlet 中,如何更改现有 cookie 的值?

如何连接 Derby 数据库和 Servlet?

Servlet,jsp,JSP技术 ,JSP编程

如何向我的 Java JFrame 添加一些声音? [关闭]

XmlDocument 如何将新记录插入现有 XML 文件

从 Java servlet 中的 POST 请求获取请求有效负载