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

vit*_*vit 2 java jsp tomcat servlets

我正在尝试将请求转发到另一个包含哈希符号('#')的URL:

request.getRequestDispatcher("/some/path.jsp#somehash").forward(request, response);
Run Code Online (Sandbox Code Playgroud)

但是,Tomcat告诉我"请求的资源不可用".如果我从URL中删除哈希,一切正常.哈希是不允许的,还是我不对他们对待?

ska*_*man 7

#符号是一个浏览器的东西,而不是服务器的事情.当您#在浏览器中键入带有a的URL时,浏览器不会将该部分发送到服务器.它在没有它的情况下发送URL,然后在获取页面时跳转到命名锚点.

当您要求容器为您获取该URL时,它不会#对任何其他URL 进行任何不同的处理- 它没有特殊含义,因此它会查找一个名为的JSP页面/some/path.jsp#somehash,当然这个页面不存在.

你需要以某种方式在客户端保持跳转到锚点的逻辑.也许您可以在结果页面上放置一些javascript以滚动到文档中的那一点.