/** * 修改的點擊觸發事件 * @param data */ function change(courseid) { //將獲取到的courseid傳入到session sessionStorage.setItem("courseId",courseid); //跳轉到修改頁面 window.location.href="${sessionScope.path}/admin/jsp02/alterCourse.jsp"; }
上面的這個是一個觸發按鈕,能夠經過設置onclick事件ajax
$(sessionScope.path)/ 這裏寫跳轉頁面的相對路徑瀏覽器
獲取方法,在這裏我是寫一個函數,把數據返回,x()session
function x(){ var data = sessionStorage.getItem("courseId"); return data; }
if(x()==null||x()==""){ alert("請點擊對應課程修改按鈕"); window.location.href="${sessionScope.path}/admin/jsp02/index.jsp"; }else{ a(); }
這裏是避免直接在頁面地址上寫路徑報錯誤,傳送一個空值過去dom
------------------------------------------------------------------------------------------------------jsp
更全面的理解:函數
先提出幾個問題?編碼
一、一個jsp頁面的轉發如何轉發到另外一個jsp頁面url
二、一個Servlet如何把參數的傳遞到一個jsp頁面,並能接受到spa
我先回答第一個問題,在這裏我看到jsp頁面轉發到另外一個jsp頁面,我第一個想到的就是重定向code
和轉發,但發現若是要在jsp頁面作就是要:
index2.jsp頁面 實現跳轉到index.jsp頁面
一、
<% request.getRequestDispatcher("/index.jsp").forward(request,response); %>
這樣作能夠實現跳轉到index.jsp頁面,可是我發現這種方法的話不能作到控制它達到某種條件再轉發
例如我這裏原本想作一個觸發事件,發現尚未點擊就直接跳轉了
因此這個方法雖然能夠實現跳轉但不夠完整;
因而我使用另外一種方法就能夠實現jsp跳轉那就是: window.location.href = "${sessionScope.path}/ 路徑";
二、
function x(){ window.location.href = "${sessionScope.path}/index.jsp"; }
<input type="button" id="bto" value="按鈕" onclick="x()">
這樣就能實現控制跳轉頁面
這種方法是jsp頁面跳轉jsp頁面比較簡單的方法
還有一種form表單:
三、
<form action="${path}/index.jsp" > <input type="submit" value="提交"> </form>
也能夠實現控制跳轉頁面
還有一種比較麻煩的:那就是ajax
四、
$("#bto").click(function () { $.ajax({ type: "Get", dataType: "text", url: "${path}/UserServlet", data: "userName="+Math.random(), success: function(data){ <%-- document.getElementById("b").innerHTML = data;--%> if(data){ window.location.href = "${sessionScope.path}/index.jsp"; } }, error: function(msg){ alert("請聯繫客戶") } }) })
<input type="button" id="bto" value="按鈕">
經過點擊事件觸發ajax提交Servlet層,而後能夠響應數據回來,而後跳轉(固然這個方法和第二種方法差很少,它能帶參數第二種也能夠)
第二種方法(二、)的那個方法 -----》 帶參數的:
function x(){ sessionStorage.setItem("userId",2); window.location.href = "${sessionScope.path}/index.jsp"; }
sessionStorage.setItem()方法設置鍵值,但這裏的接收,不是session.getAttribute() 獲得值而後再set進去session隱藏域;而是
function y(){ var item = sessionStorage.getItem("userId"); return item; }
使用sessionStorage.getItem()方法獲取,而後就直接調用y()就能夠獲取到另外一個jsp頁面的值,這個方法頭頂上有
繼續說ajax方法:
提交到Servlet層後,可使用三种放轉發到另外一個jsp:
一、重定向
二、轉發
三、window.location.href = ${sessionScope.path}/路徑;
要帶參數的話,主要有兩種方法,一種是把它set到session的做用域裏,:
Servlet層:req就是request
req.getSession().setAttribute();
經過這個方法拿到session的隱藏做用域,而後這個方法不是想剛剛那個
sessionStorage.getItem那樣獲取,而是:
<% Object userId = session.getAttribute("userId"); //因爲這裏的數據永遠不會被清除,除非瀏覽器關閉,因此要從新set到session的做用域 session.setAttribute("userId",userId); %>
以後使用EL表達式${} 獲取
注意:
一、編碼格式
二、Servlet層可使用重定向、轉發、window.location.href = .... ;但如果參數傳遞的話,
jsp可使用
sessionStorage.setItem("userId",2);這種方法,但Servlet不能,它只能使用把參數放進Session隱藏域中的方法request.getSession().setAttribute(); ----------這種方式設置參數對應的jsp獲取到參數的頁面:session.getAttribute返回一個Object類型,而後這裏要記得把它再次session.setAttribute經過EL表達式,${}獲取