HttpServletRequest – SetParameter

我知道我可以使用HttpServletRequest.getParameter()来获取URL参数值。

是否有可以设置/替换值的等效方法?

不,那里没有。

您只能更改属性,而不能更改参数。

实现类似function的唯一方法是包装请求(使用为getParameter返回其他内容的类)。

相关的好奇心:某些servlet容器中存在一个错误,可以让你执行request.getParameterValues(name)[0] = "newValue" ,但这只会导致不一致。

您可以通过将HttpServletRequest替换为自定义的HttpServletRequestWrapper实现来使参数映射成为可修改的映射,该实现替换了在链中早期放置的Filter内的参数映射。

然而,这闻起来像一个解决方法。 在其中一条评论中,您声明要对参数进行编码(实际上: 解码它们,因为它们已经编码)。 你正在寻找解决方案的错误方向。 对于GET请求参数,需要在servletcontainer本身中设置编码需求(例如,在Tomcat的情况下,只需设置HTTP连接器的URIEncoding属性)。 对于POST ,您需要通过ServletRequest#setCharacterEncoding() 。 另请参阅本文中的详细解决方案(阅读整篇文章,了解完整的图片)。

不。但是,你为什么要那样做呢? 可能还有其他方法可以完成您需要做的事情。

我不认为有。 但是你可以以类似的方式使用setAttribute()方法; 你只需要使用getAttribute() – 而不是getParameter() – 以便稍后获取值。

请求参数通过HTTP从客户端提交给servlet或JSP。 它们不是由服务器端代码设置的,因此不需要任何set方法(setParameter())。

此外,它将增加安全性,没有人可以更改请求参数。