如何向我的Java Servlet的现有HttpServletRequest添加参数?
我想在我的如何向我的Java Servlet的现有HttpServletRequest添加参数?,java,web-applications,servlets,Java,Web Applications,Servlets,我想在我的HttpServletRequest的参数映射中添加一个新参数 下面的代码 request().getParameterMap().put("j_username", user); request().getParameterMap().put("j_password", pwd); 创建此错误 no modifications are allowed to a locked parameter map 正确的方法是什么?请求的参数是浏览器作为参数发送的值。没有理由改变它们。如
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));
如果将请求转发到另一个资源,则可以添加参数(尽管我不认为这是一种好的做法):
但是,参数应该正确编码。我遇到了类似的问题,并通过复制参数映射来解决
Map<String, String[]> params = new HashMap<String, String[]>(req.getParameterMap());
Map params=newhashmap(req.getParameterMap());
实际上我想在请求中添加参数而不是属性。原因是我正在开发某个开源应用程序(xwiki)的扩展,以满足我的需求,该应用程序在请求中需要一个参数,它的获取方式是request.getParameter(“paramName”);最初的请求是来自另一个网络应用程序,我不能设置它本身,因为它不知道他们然后由mucayufa提供的链接可能是你正在寻找的。不过,我认为你不能像这样进行身份验证。这里有一篇关于此的好文章:请检查此链接。你的答案在那里:@nIcEcOw link break!谢谢
Map<String, String[]> params = new HashMap<String, String[]>(req.getParameterMap());