【疑難解答】如何通過servlet跳轉到jsp的錨點位置
阿新 • • 發佈:2019-01-02
在實際情況中,我們往往需要從servlet中跳轉到jsp上的某一個特殊位置,而不只是首部,遺憾的是servlet中並不可以只在url後面加#引數的方式來跳轉到描點,下面,我們就來探討一下問題的解決方案
1.Servlet跳轉之前在request中加入一個引數(錨記的id)
2.Jsp中加入一段js程式碼,獲取1中的引數值,然後模擬錨記的點選
假設我們有這樣一個網頁
程式碼為
<style type="text/css">
#div1{
height: 1000px;
background-color: gray;
}
#div2{
height: 1000px;
background-color: green;
}
</style>
</head>
<body>
<div id="div1">
</div>
<a name="here" id="here" href="#here"></a>
<div id="div2">
</div>
</body>
預覽為
如果我們需要直接翻滾到綠色的部分
直接在url後面接上#here即可,如http://localhost:8080/ex150512_testHref/index.jsp#here
OK,很好,
但是當我們需要請求Servlet,然後再返回Jsp頁面需要翻滾到綠色部分時,又可以直接在url後面加上#here來實現嗎?
在頁面上加上一個超連結來訪問servlet
<body>
<a href="servlet1">GOTOGREEN</a>
<div id="div1">
</div>
<a name="here" id="here" href="#here"></a>
<div id="div2">
</div >
</body>
Servlet核心程式碼為
request.getRequestDispatcher("/index.jsp#here").forward(request, response);
點選之後
發現出現404錯誤
解決方案
1.在request中加入一個引數(錨記的id)
servlet核心程式碼為
request.setAttribute("location", "here");
request.getRequestDispatcher("/index.jsp").forward(request, response);
2.在頁面加入一段js程式碼,跳轉到相應的錨記
<script type="text/javascript">
window.onload=function(){
//如果location存有資料,跳到錨點
var location_id='${location}';
if(location_id!=''){
document.getElementById(location_id).click();
}
}
</script>
3.在頁面上加上一個超連結來訪問servlet2
最後的完整頁面程式碼為
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style type="text/css">
#div1{
height: 1000px;
background-color: gray;
}
#div2{
height: 1000px;
background-color: green;
}
</style>
<script type="text/javascript">
window.onload=function(){
//如果location存有資料,跳到錨點
var location_id='${location}';
if(location_id!=''){
document.getElementById(location_id).click();
}
}
</script>
</head>
<body>
<a href="servlet1">GOTOGREEN</a>
<a href="servlet2">GOTOGREEN2</a>
<div id="div1">
</div>
<a name="here" id="here" href="#here"></a>
<div id="div2">
</div>
</body>
</html>
最後點選GOGREEN2,然後你會發現,你成功了!