在前向URL中使用带有RequestDispatcher的哈希符号

我正在尝试将请求转发到另一个包含哈希符号('#')的URL:
request.getRequestDispatcher("/some/path.jsp#somehash").forward(request, response);
但是,Tomcat告诉我“请求的资源不可用”。如果我从URL中删除哈希,一切正常。哈希是不允许的,还是我不对他们对待?     
已邀请:
#
符号是浏览器的东西,而不是服务器的东西。当您在浏览器中键入带有
#
的URL时,浏览器不会将该部分发送到服务器。它在没有它的情况下发送URL,然后在获取页面时跳转到命名锚点。 当你要求容器为你获取该URL时,它不会将
#
与任何其他URL区别对待 - 它对它没有特殊意义,因此它会查找名为
/some/path.jsp#somehash
的JSP页面,当然这不是存在。 你需要以某种方式在客户端保持跳转到锚点的逻辑。也许您可以在结果页面上放置一些javascript以滚动到文档中的那一点。     
URL片段纯粹是客户端。
RequestDispatcher#forward()
完全是服务器端的。前向给定URL中的内容不会发送到客户端。但是,您可以使用
HttpServletResponse#sendRedirect()
重定向到给定的URL。然后,URL片段将被发送到客户端,并反映在浏览器地址栏中。然而,重定向请求的缺点是当前请求将被填充并且将创建一个全新的请求。如果那是不可承受的,那么你确实必须在JavaScript角落寻找解决方案。     

要回复问题请先登录注册