Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何向我的Java Servlet的现有HttpServletRequest添加参数?_Java_Web Applications_Servlets - Fatal编程技术网

如何向我的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());