如何将参数添加到我的Java Servlet的现有HttpServletRequest中?

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

以下代码

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

创建此错误

 no modifications are allowed to a locked parameter map 

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

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

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

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

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

但是,参数应该正确编码。

我遇到了类似的问题,并通过制作参数图的副本来解决它。

 Map params = new HashMap(req.getParameterMap());