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


/**
 * 修改的點擊觸發事件
 * @param data
 */
function change(courseid) {
    //將獲取到的courseid傳入到session
    sessionStorage.setItem("courseId",courseid);
    //跳轉到修改頁面
    window.location.href="${sessionScope.path}/admin/jsp02/alterCourse.jsp";
}

上面的這個是一個觸發按鈕,可以通過設置onclick事件

$(sessionScope.path)/ 這里寫跳轉頁面的相對路徑

 

獲取方法,在這里我是寫一個函數,把數據返回,x()

 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();
            }

這里是避免直接在頁面地址上寫路徑報錯誤,傳送一個空值過去

 

------------------------------------------------------------------------------------------------------

更全面的理解:

 

先提出幾個問題?

1、一個jsp頁面的轉發如何轉發到另一個jsp頁面

2、一個Servlet如何把參數的傳遞到一個jsp頁面,並能接受到

 

我先回答第一個問題,在這里我看到jsp頁面轉發到另一個jsp頁面,我第一個想到的就是重定向

和轉發,但發現如果要在jsp頁面做就是要:

index2.jsp頁面  實現跳轉到index.jsp頁面  

1、

 <%
                    request.getRequestDispatcher("/index.jsp").forward(request,response);
       %>

這樣做可以實現跳轉到index.jsp頁面,但是我發現這種方法的話不能做到控制它達到某種條件再轉發

例如我這里本來想做一個觸發事件,發現還沒有點擊就直接跳轉了

所以這個方法雖然可以實現跳轉但不夠完整;

於是我使用另一種方法就可以實現jsp跳轉那就是:  window.location.href = "${sessionScope.path}/  路徑";

2、

 function x(){
        window.location.href = "${sessionScope.path}/index.jsp";
    }
<input type="button" id="bto" value="按鈕" onclick="x()">

 

這樣就能實現控制跳轉頁面

這種方法是jsp頁面跳轉jsp頁面比較簡單的方法

 

還有一種form表單:

3、

<form action="${path}/index.jsp" >


    <input type="submit" value="提交">
</form>

也可以實現控制跳轉頁面

還有一種比較麻煩的:那就是ajax

4、

$("#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層,然后可以響應數據回來,然后跳轉(當然這個方法和第二種方法差不多,它能帶參數第二種也可以)

第二種方法(2、)的那個方法  -----》 帶參數的:

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:

1、重定向

2、轉發

3、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表達式${} 獲取

注意:

1、編碼格式

2、Servlet層可以使用重定向、轉發、window.location.href = .... ;但若是參數傳遞的話,

jsp可以使用

 sessionStorage.setItem("userId",2);

這種方法,但Servlet不能,它只能使用把參數放進Session隱藏域中的方法
request.getSession().setAttribute(); ----------這種方式設置參數

對應的jsp獲取到參數的頁面:
session.getAttribute返回一個Object類型,然后這里要記得把它再次
session.setAttribute
通過EL表達式,${}獲取
 
        

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM