首頁  >  文章  >  web前端  >  JSP頁間的傳值方法總結

JSP頁間的傳值方法總結

韦小宝
韦小宝原創
2018-01-18 09:55:152148瀏覽

JSP頁間傳遞參數是經常需要使用到的功能,有時還需要多個JSP頁間傳遞參數,以下這篇文章主要給大家介紹了關於JSP頁間傳值方法的相關資料,文中介紹的非常詳細,對大家有一定的參考學習價值,對JSP有興趣的朋友們下面來一起看吧。

前言

JSP 頁間傳遞參數是專案中常需要的,這應該算是 web 基本功吧。試著將各種方式總結下來,需要時可以進行權衡利弊選擇最適合的方式。下面來一起看看詳細的介紹:

1. URL 連結後追加參數

<a href="next.jsp?paramA=A&paramB=B..." rel="external nofollow" >URL 后面追加参数</a>

<jsp:include page="next.jsp"><jsp:param name="paramA" value="A"/></jsp:include> 

<jsp:forward page="next.jsp"><jsp:param name="paramA" value="B"/></jsp:forward> 

response.sendRedirect("next.jsp?paramA=A&paramB=B...")

window.location = "next.jsp?paramA=A&paramB=B..."

上述幾種程式碼執行時都會攜帶參數跳到next.jsp 頁面。

在next.jsp 頁面中取得對應參數的方式如下:

//内嵌的 java 代码
<%String paramA = request.getParameter("paramA"); %>

//如果引入了 EL
{param.paramA}

#優點:簡單性與多重瀏覽器支援(沒有瀏覽器不支援URL)。

缺點:

   1)傳送的資料只能是字串,對資料型別和大小都有一定的限制;

   2)傳送資料的值會在瀏覽器網址列裡面被看到,安全性等級較低。

2. Form

 <form action="next.jsp" method="post"> 
  <input type="text" name="paramA" value="A"> 
  <input type="hidden" name="paramB" value="B"> 
  <input type="submit" value="提交"> 
 </form>

在 next.jsp 頁面中取得對應參數的方式與 (1)是類似的。

優點:

1)簡單性與多瀏覽器支援(同樣沒有瀏覽器不支援form);

2) 可以提交的資料量比URL 方式要大的多;

3)傳輸的值會在瀏覽器的地址欄中顯示出來,但是有一點黑手段的同樣能從頁面源碼中將參數列表構造出來;

缺點:

1)傳輸的資料也只能是字串,對資料型別有一定的限制;

3. 設定Cookie

用客戶端的認證憑證小小Cookie 當然也能實作JSP 頁面的傳值。

 <% 
  Cookie c=new Cookie("paramA","A"); 
  c.setMaxAge(60*60); //cookie 有效期1分钟
  response.addCookie(c); //将cookie 添加到 http响应中
  %>

想要在next.jsp 頁面讀取cookie,需要呼叫request.getCookies() 方法來取得一個javax.<a href="http://www.php.cn/wiki/1516.html" target="_blank">servlet</a>.http. Cookie 物件的陣列。

然後遍歷這個數組,使用getName()方法和getValue()方法來取得每一個cookie的名稱和值。

//内嵌的 java 代码
<%
 Cookie cookie = null;
 // 获取cookies的数据,是一个数组
 Cookie[] cookies = request.getCookies();
 if(cookies != null ){
  for (int i = 0; i < cookies.length; i++){
   cookie = cookies[i];
   out.print("参数名 : " + cookie.getName());
   out.print("<br>");
   out.print("参数值: " + URLDecoder.decode(cookie.getValue(), "utf-8") +" <br>");
   out.print("------------------------------------<br>");
  }
 }else{
  out.println("<h2>没有发现 Cookie</h2>");
 }
%>

//EL 获取方式
${cookie.paramA.value}

優點:

1)Cookie 的值能夠持久化,即使客戶端機器關閉,下次開啟還是可以得到裡面的值;

2) Cookie 可以幫助伺服器端保存多個狀態信息,但不用伺服器端專門分配儲存資源,減輕了伺服器端的負擔。

缺點:

1)雖然安全性相比 URL 和 Form 要提高了許多,但是也存在黑手段獲取客戶端 cookie,暴露客戶資訊。

4. 設定 Session

#個人認為 session 和 cookie 一個在服務端一個在客戶端。

在它們中加入鍵值對後,不只是提供了頁面之間的傳遞,其實是一種資料共享的解決方案。

 <%  
 session.setAttribute("paramA","A"); 
 response.sendRedirect("next.jsp"); 
 %>

想要在 next.jsp 讀取 session 的方法:

//内嵌java 片段
<%=session.getAttribute("paramA") %>

//EL 获取方式
{session.paramA}

Session 的優缺點可以參考 Cookie。

以上就是本篇文章的所有內容,希望對大家學習提供到幫助! !

相關推薦:

詳解直接存取WEB-INF目錄下的JSP頁面的方法

ajax如何跳到新的jsp頁面的實作方法

JSP中JSTL提供的函數標籤EL運算式操作字串的方法

#

以上是JSP頁間的傳值方法總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn