HttpServletRequest - SetParameter

AJM*_*AJM 11 java encoding servlets

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

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

Thi*_*ilo 9

不,那里没有.

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

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

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


Bal*_*usC 6

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

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