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())。
此外,它将增加安全性,没有人可以更改请求参数。
- S3 Java客户端因“Content-Length delimited message body的过早结束”或“java.net.SocketException Socket closed”而失败了很多
- 如何在Spring xml配置文件中初始化Java Date对象?
- 覆盖静态方法和最终方法
- 如何在spring批处理中读取ini文件(key = value)
- 如何在Java中实现Predicate,用于针对任意数量的规则交叉检查String?
- 将Cron Expression与当前时间进行比较
- ClassCast错误:Java 7与Java 8
- Java中的字符串:equals vs ==
- DateTimeFormatter月模式字母“L”失败