1. 程式人生 > >JSP 的四種傳值方法

JSP 的四種傳值方法

  1. url字尾追加引數
  2. Form表單
  3. 設定cookies
  4. 設定session
1.url追加引數
<a href="next.jsp?paramA=A¶mB=B...">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¶mB=B...")

window.location = "next.jsp?paramA=A¶mB=B..."

next.jsp獲取的方法:
//內嵌的 java 程式碼
<%String paramA = request.getParameter("paramA"); %>

//EL
{param.paramA}
2.From
  <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>  

也可使用隱藏域方法
<input type="hidden" value="id" name="data"/>

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.servlet.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。




相關推薦

JSP方法

url字尾追加引數Form表單設定cookies設定session1.url追加引數<a href="next.jsp?paramA=A¶mB=B...">URL 後面追加引數</a

GridViewControl頁面間三方法

GridViewControl 單選框選中行頁面之間傳值 1. 第一種用構造方法傳值 FormGetDuty frm = new FormGetDuty (strdebugPeople, strCRAFTPLANID, "質檢推送按鈕"); f

Struts2資料標籤()使用S:param標籤的三方法

1.新建JavaBean的例項:Java程式碼 package com.wl.control.Bean; public class UserInfo { private String name;

JSP頁面方法總結

作者:Orson 出處:http://www.cnblogs.com/java-class/ 如果,您認為閱讀這篇部落格讓您有些收穫,不妨點選一下右下角的【推薦】 如果,您希望更容易地發現我的新部落格,不妨點選一下左下角的【關注我】 如果,您對我的部落格內容感興趣,請繼續關注我的後續部落格,我是【Orson】

ASP.NET之5全域性變數!頁面間方法!

之一: 1. 使用QueryString變數   QueryString是一種非常簡單的傳值方式,他可以將傳送的值顯示在瀏覽器的位址列中。如果是傳遞一個或多個安全性要求不高或是結構簡單的數值時,可以使用這個方法。但是對於傳遞陣列或物件的話,就不能用這個方法了。下面是一個例子:   a.aspx的C#程式

分享三常用的頁面方法

本篇文章羅列了三種頁面之間的傳值方式(實際當然不止三種啦^_^),也是博主認為比較常用的方法,沒有什麼花俏,但是幾乎每個app裡面都要用到所謂的傳值。所以,今天將這三種方法寫下來,一來記錄自己的開發生涯,二來可以和廣大初學者交流共勉。 工程中建立了一個NavgationCo

JSP與Servlet及對比

input 透明 https 需要 gic jquery sevlet cart scipt JSP是Servlet技術的擴展,本質上是Servlet的簡易方式,更強調應用的外表表達。 JSP編譯後是”類servlet”。 Servlet和JSP最主要的不同點在於,S

js通過cookie對兩個沒有關系的jsp頁面進行

IT eva 有關 time bsp 關系 cape document 兩個   //Cookie取值   function readCookie (name)   {     var cookieValue = "";     v

Oracle數據OA信用盤平臺出租遠程連接的設置方法和註意事項

應用 prot 用戶解鎖 con 註意事項 菜單欄 tcp protocol sci OA信用盤平臺出租論壇:haozbbs.com Q1446595067 第一種情況:  若oracle服務器裝在本機上,那就不多說了,連接只是用戶名和密碼的問題了。不過要註意環境變量%OR

C#跨窗體方法

方法1.通過建構函式傳值 Form1:   Form2 data = new Form2();//例項化物件   data.Name1 = textBox1.Text;//給物件賦值   data.Show(); Form2:   public partial class Form2 : Form

angualr routerLink 兩方法及引數的使用

1.路徑:http://localhost:8080/#/product?id=1 <a [routerLink]="['/product']" [queryParams]="{id:1}">詳情</a> ts獲取查詢引數: import { Component,

Vue router-link 兩方法及引數的使用

1.路徑:http://localhost:8080/#/detail?detail_id=1 <router-link :to="{path:'/detail',query: {detail_id: id}}">跳轉</router-link>  (id是引數

[轉] 兩個靜態html頁面方法的總結

問題 因最近嘗試實現客戶端與服務端分離,服務端只提供介面,客戶端用html+js實現,分成兩個獨立的專案部署,因專案是個人專案,客戶端展示不考慮使用像Angular、Vue、Native這種前端框架實現,於是全部使用靜態頁面實現,請求資料用ajax,在開發的過程中,就遇到了頁面之間傳

演算法學習——Map的遍歷方法詳解

參考文獻:Java中如何遍歷Map物件的4種方法 java中的所有map都實現了Map介面,以下方法適用於任何map實現(HashMap, TreeMap, LinkedHashMap, Hashtable, and so on) 方法一 在for-each迴圈中使用entr

java學習——Map的遍歷方法

Map是java中的介面,Map.Entry是Map的一個內部介面。          Map提供了一些常用方法,如keySet()、entrySet()等方法,keySet()方法返回值是Map中key值

day28HibernateDay03(一對多和多對多 級聯刪除儲存 cascade 配置檔案 )

1、持久化類和一級快取 持久化類:JavaBean+對映的配置檔案 持久化物件的三種狀態 瞬時態 持久態 脫管態 Session的一級快取,快照機制 主鍵的生成策略 常用uuid native 2、管理

解決jsp中後臺中文到前臺亂碼的問題

臨時要在一個jsp頁面使用到後臺傳過來的一個引數,想到中文可能會亂碼,所以一開始是這樣寫的: 1. 後臺java程式碼傳值過程: this.setName(URLEncoder.encode("測試","UTF-8")); 2.前臺jsp頁面取值過程,測試一下: <% S

Activity之間的三方式

*************************************** 第一種:Extras:額外的,附加的.在Intent中附加額外的訊息 //傳值 Intent intent = new Intent(this, XXXActivity.class); intent.pu

Vue幾問題的分析

在學習vue過程中自己總結了幾種元件間傳值的方式 1、路由傳參 步驟: ①定義路由時加上引數props: true,在定義路由路徑時要留有引數佔位符: name『用法: to=”’路徑/’+value”』 ②在跳轉到的頁面加上引數props

Service 中 onStartCommand 回撥返回的區別

服務的兩種建立方式 Service 是一個可以在後臺執行長時間執行操作而不提供使用者介面的應用元件。服務可由其他應用元件啟動,而且即使使用者切換到其他應用,服務仍將在後臺繼續執行。此外,元件可