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

问题描述 投票:1回答:4

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

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

servlets uri hashtag
4个回答
0
投票

散列(#)用于将片段与Url分开。片段是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?


0
投票

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

String url1=request.getRequestURI();

url1.split("/");

0
投票

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


0
投票

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

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

GET /foo HTTP/1.1
Host: www.example.com
© www.soinside.com 2019 - 2024. All rights reserved.