一個jsp連帶參數跳轉到另外一個jsp頁面的解決方法

/**
 * 修改的點擊觸發事件
 * @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表達式,${}獲取
相關文章
相關標籤/搜索