我有一个URL abc.com/#cancel。在我的servlet中,我需要存储#cancel以备将来使用。我已经尝试过HttpServletRequest getRequestURI()和其他一些选项。但是请勿在请求对象中看到此值。我如何得到这个值。
在我的应用程序中,我正在使用GWT,它使用rpc调用,并且rpc请求是基于散列标记值进行的。例如:mydomain.com/#profile,将请求转发给profile.rpc。在我的情况下,我使用过滤器拦截此调用,该过滤器执行一些基本检查,然后我想再次将请求转发给mydomain.com/#profile。但是我无法在请求对象中找到#profile。希望这能解释我的问题以及我在寻找什么。
答案 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