如何向我的 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 的值?