我的java服务器工作如下:

http://locahost:5555/?search="java"
.

上面的链接将正常工作。但是,如果我想用“#”作为搜索字符串的一部分,这一切都出错了。例如:

http://locahost:5555/?search="c#"
.

出于某种原因,“#”忽略后一切。如果我使用“#”的解码版本,它再次正常工作。例如:

http://locahost:5555/?search="c%23"
.

系统应该由不了解URL编码的人使用,以便他们永远不会放入%23而不是#。无论如何它都在吗?

有帮助吗?

解决方案

用户据说不应该直接访问URL,所以如果他们在URL中放置“C#”,则另一方面将没有任何过程,您可以使用

<form action="yourcontroller" method="post">

   <input type="text" name="txtSearch" />

   <input type="submit" value="search"/>

</form> 
. 有了这个,它将照顾你提到的“#”这样的特殊字符。

别忘了在控制器中捕获参数

request.getParamter("txtSearch");
.

其他提示

除了编码它,它还没有办法。#之后的字符串更加符合URL的location

字符串后,#后不会通过获取参数传递给服务器。使用Post方法。

https://developer.mozilla.org/en-US / DOCS / Web / API / Window.Location

它在浏览器中。服务器永远不会通过hashtag(#)符号的请求,恰好到符号。

javascript解决方法可能是一个坏主意。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top