jsp页面跳转到指定锚点

[转自http://hi.baidu.com/hankers/item/b5ea51eb28858d275a2d6498]


问题描述:

在page.jsp中定义了一个锚点<a name="anchor">,在Servlet中forward到此锚点:
request.getRequestDispatcher("/page.jsp#anchor").forward(request, response);
返回HTTP404错误,即请求资源不存在错误。

原因分析:
锚点标记是对浏览器而言的,而不是对服务器。当用户在浏览器上输入一个含有锚点的地址时,浏览器发送请求时会自动去除锚点标记。
例如当用户访问: http://www.w3.org/TR/REC-html40/struct/links.html#h-12.1.1
发送的Get请求为:GET /TR/REC-html40/struct/links.html HTTP/1.1

解决方法:
方法1.使用response.sendRedirect替换forward,使浏览器控制锚点跳转。

方法2.使用带参数的url:"/page.jsp?position=anchor",然后在page.jsp中加入js代码获取position参数,使用js:location.hash=anchor滚动到锚点所在位置。

方法3.使用request.setAttribute("position", "anchor"),然后在页面中使用js滚动到锚点所在位置:location.hash=<%=request.getAttribute("position")%>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值