获取servlet请求中URL的哈希标记(#)字符

时间:2016-12-22 10:49:27

标签: servlets uri hashtag

我有一个URL abc.com/#cancel。在我的servlet中,我需要存储#cancel以备将来使用。我已经尝试过HttpServletRequest getRequestURI()和其他一些选项。但是请勿在请求对象中看到此值。我如何得到这个值。

在我的应用程序中,我正在使用GWT,它使用rpc调用,并且rpc请求是基于散列标记值进行的。例如:mydomain.com/#profile,将请求转发给profile.rpc。在我的情况下,我使用过滤器拦截此调用,该过滤器执行一些基本检查,然后我想再次将请求转发给mydomain.com/#profile。但是我无法在请求对象中找到#profile。希望这能解释我的问题以及我在寻找什么。

4 个答案:

答案 0 :(得分:0)

哈希(#)用于将片段与Url分开。 Fragment是URL的可选部分,用于处理资源的特定部分。

请参阅以下链接
http://www.skorks.com/2010/05/what-every-developer-should-know-about-urls/
URL fragment (#) allowed characters
List of valid characters for the fragment identifier in an URL?

答案 1 :(得分:0)

request.getRequestURI()将为您提供网址,例如:abc.com/#cancel。

String url1=request.getRequestURI();

url1.split("/");

答案 2 :(得分:0)

发现碎片化的URL没有收到请求,当我们执行response.sedRedirect()时,浏览器不会从浏览器URL栏中删除碎片部分。但不确定这是怎么发生的。无论如何,在我的情况下,而不是将请求发送到另一个JSP,然后将表单提交到不同的URL,我直接做response.sendRedirect(),它没有删除碎片部分,所以它现在正在工作:)

答案 3 :(得分:0)

您无法获得URL服务器端的片段部分,因为浏览器不会将其发送到服务器。

例如:用户单击指向http://www.example.com/foo#bar的链接。浏览器连接到www.example.com并发送:

GET /foo HTTP/1.1
Host: www.example.com