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

2022-09-01 19:12:11

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

下面的代码

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

创建此错误

no modifications are allowed to a locked parameter map

正确的方法是什么?


答案 1

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

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

如果将请求转发到另一个资源,则可以添加参数(尽管我不会说这是一种很好的做法):

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

但是,应正确编码参数。


答案 2

我遇到了类似的问题,并通过制作参数映射的副本来解决这个问题。

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

推荐