我的java服务器的工作方式如下:
http://locahost:5555/?search="java"
以上链接可以正常使用。但是,如果我想使用"#"作为搜索字符串的一部分,一切都出错了。例如:
http://locahost:5555/?search="c#"
出于某种原因,"#"被忽略了。如果我使用"#"的解码版本它再次正常工作。例如:
http://locahost:5555/?search="c%23"
系统应该由不了解网址编码的人使用,因此他们永远不会使用%23代替#。不管怎么说呢?
答案 0 :(得分:5)
除了编码之外,没有办法解决它。 #
将location
视为网址#
之后的字符串。
{{1}}之后的字符串不会通过GET参数传递给服务器。改为使用POST方法。
https://developer.mozilla.org/en-US/docs/Web/API/Window.location
答案 1 :(得分:1)
用户应该不应该直接访问网址,所以如果他们在网址中输入“c#”,那么另一方面就没有进程可以使用
<form action="yourcontroller" method="post">
<input type="text" name="txtSearch" />
<input type="submit" value="search"/>
</form>
这样,它会照顾你提到的“#”之类的特殊字符。
不要忘记捕捉控制器中的参数
request.getParamter("txtSearch");
答案 2 :(得分:0)
它在浏览器中。服务器永远不会获得带有#标签符号的请求,只需要符号。
javascript解决方法可能是一个坏主意。