使用URL中的#作为值键

时间:2014-08-01 08:44:44

标签: java url java-server

我的java服务器的工作方式如下:

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

以上链接可以正常使用。但是,如果我想使用"#"作为搜索字符串的一部分,一切都出错了。例如:

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

出于某种原因,"#"被忽略了。如果我使用"#"的解码版本它再次正常工作。例如:

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

系统应该由不了解网址编码的人使用,因此他们永远不会使用%23代替#。不管怎么说呢?

3 个答案:

答案 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解决方法可能是一个坏主意。