【问题标题】:'+' symbol gets replaced by space in request paramters of Servlet'+' 符号在 Servlet 的请求参数中被空格替换
【发布时间】:2015-05-18 09:18:19
【问题描述】:

当在 JSP 的文本字段中输入包含任何“+”符号的文本时,当通过 request.getParameter("abc") 在 servlet 中检索参数值时,文本将被空格替换。

我阅读了一些博客并开始知道需要进行编码才能成功读取确切的文本,但我并不清楚。有人可以帮我解决这个问题吗?

【问题讨论】:

  • 显示您的代码,相关部分.. Servlet 应该处理这个问题。
  • "+" 是" "(空格)的url编码结果,加号应该是%2B。
  • 我知道“+”是“”(空格)的 url 编码结果,但如果我实际输入的是“+”怎么办。如何解决这个问题。
  • Encode URL in JavaScript? 的可能重复项

标签: jsp servlets


【解决方案1】:

+ 在参数值内是非法的,因为它是参数名称-值对之间定义的分隔符。发送前需要URLEncode参数名和参数值。

【讨论】:

  • 而且您还需要在服务器端解码这些参数,以取​​回您的原始文本。
  • @TimBiegeleisen 不,它是一个 JSP,它会自动发生,就像在任何 servlet 容器中一样。
【解决方案2】:

无法复制。

即使有

<form action="rep" method="GET">
    <input name="foo" type="text"/>
</form>

当我在输入字段中键入a+b 时,rep 的 servlet(即使它是一个 jsp)接收 foo=a%2Bb 作为查询字符串。

我想您是手动生成查询,在这种情况下,您必须对参数进行 url 编码。

【讨论】:

  • 添加指向 url 编码帖子的链接:stackoverflow.com/questions/332872/encode-url-in-javascript
  • @Teddy : OP 在哪里谈到了 javascript?
  • 根据你的说法,他是手动生成的。我认为它必须使用 Java 脚本。虽然它也可以在 scriptlet 中生成。
  • @Teddy :我认为你是对的,他一定在使用 JavaScript。我的评论不是针对您,而是更多关于应该准确上下文的问题,因为它不是一个简单的浏览器。
  • 我使用 AJAX 方法提交表单。想知道是否有办法以 AJAX 或 javascript 方式进行。我尝试使用 URIComponentEncoder 但它没有用。暂时在文本字段中将 + 替换为 %2B 并且它对我有用。但我一直在寻找 AJAX 或 javascript 方式的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多