Request.getParameter() 将 ONLY "+" 替换为 " "



在后端检索参数时遇到问题。

我知道URL上有一些保留字符。但我已经写了一些包含"+"@"等链接的链接。

例如:www.server.com/?param=@a+b

在后端,req.getParameter("param"(返回"@ab"而不是"@a+b"。对于"客户端"已经在向服务器发送"+"字符的情况,是否有解决方法?

我正在使用灵活环境上的AppEngine和Jettyservlet容器。

也许我正在寻找的答案是,是什么字符集使"+"被"和@don取代。

对于您现有的预定义链接,如果您希望加号保留在服务器上的查询字符串中,则只需将+查询字符串中的每个出现项替换为%2B

例如,而不是www.server.com/?param=@a+b使用www.server.com/?param=@a%2Bb

如果你这样做,那么:

  • request.getQueryString()将返回">param=@a%2Bb"(即原始值(
  • request.getParameter("param")将返回">@a+b",这可能是您想要的

显然,这不是一个通用的解决方案,在这个解决方案中,您无法控制提交的URL以及它们的提交方式,但我使用了几种不同的浏览器Postman和curl进行了验证。

此外,用户通常希望并期望将查询字符串中的加号转换为空格,但上面建议的更改丝毫不妨碍这一点。

最新更新