session對象
session對象是java.servlet.http.HttpSession子類的對象,表示當(dāng)前的用戶會話信息。在session中保存的對象在當(dāng)前用戶連接的所有頁面中都是可以被訪問到的。 可以使用session 對象存儲用戶登錄網(wǎng)站時的信息。當(dāng)用戶在頁面之間跳轉(zhuǎn)時,存儲在session對象中的變量不會被清除。 1 對session的理解當(dāng)用戶登錄網(wǎng)站時,系統(tǒng)會自動分配給用戶一個session??梢允褂胓etId()方法得到該session的ID,如程序5-22.jsp所示。 案例名稱:使用ID屬性 程序名稱:5-22.jsp <%@ page contentType="text/html;charset=GBK" %> <HTML> <BODY> <% String s = session.getId(); %> 你的session ID:<%=s%> </BODY> </HTML> 這個ID是唯一的,用來標(biāo)識每一個用戶,當(dāng)刷新瀏覽器的時候,這個值是不變的,結(jié)果如圖5-25所示。 圖5-25 得到session ID的值 2 自定義屬性對于session對象中,經(jīng)常用到的方法是setAttribute()、getAttribute()和removeAttribute()。分別可以對session中的對象進(jìn)行存取和刪除操作。 session對象的主要用途也是保存信息,當(dāng)用戶第一次到達(dá)網(wǎng)站時,系統(tǒng)為其分配一個session。session和application一樣也使用自己的自定義屬性,如程序5-23.jsp所示。 案例名稱:使用session的自定義屬性 程序名稱:5-23.jsp <%@ page contentType="text/html;charset=GBK" %> <HTML> <BODY> <% String str = "歡迎!"; session.setAttribute("Greeting", str); out.print((String)session.getAttribute("Greeting")); %> <br><a href="5-24.jsp">下一頁</a> </BODY> </HTML> 首先給自定義屬性賦值,然后將該屬性值讀取并顯示出來,如圖5-26所示。 圖5-26 session的自定義屬性 單擊超級鏈接進(jìn)入5-24.jsp頁面。 案例名稱:使用session的自定義屬性 程序名稱:5-24.jsp <%@ page contentType="text/html;charset=GBK" %> <HTML> <BODY> <% out.print((String)session.getAttribute("Greeting")); %> <br><a href="5-24.jsp">下一頁</a> </BODY> </HTML> 在該頁面中沒有對session賦值,同樣也可以得到該session的值,如圖5-27所示。注意這里是通過5-23.asp文件的超級鏈接打開的該文件。如果打開一個新的瀏覽器直接執(zhí)行5-24.asp文件,就取不到值了,而application的自定義屬性則可以。 圖5-27 使用session自定義屬性 案例5-4 簡易session版購物車 利用session保存用戶選購的商品信息,本購物車程序包含3個程序。 (1)buy1.jsp:購物網(wǎng)頁一。 (2)buy2.jsp:購物網(wǎng)頁二。 (3)display.jsp:查看購物車程序。 購物網(wǎng)頁一如程序buy1.jsp所示。 案例名稱:購物網(wǎng)頁一 程序名稱:buy1.jsp <%@ page contentType="text/html;charset=GBK" %> <HTML><BODY> <% if (request.getParameter("c1") != null ){ session.setAttribute("s1", request.getParameter("c1")); } if (request.getParameter("c2") != null ){ session.setAttribute("s2", request.getParameter("c2")); } if (request.getParameter("c3") != null ){ session.setAttribute("s3", request.getParameter("c3")); } %> 各種肉大甩賣,一律十塊:<br> <FORM METHOD="POST" action="buy1.jsp"> <p><input type="checkbox" name="c1" value="豬肉">豬肉</p> <p><input type="checkbox" name="c2" value="牛肉">牛肉</p> <p><input type="checkbox" name="c3" value="羊肉">羊肉</p> <p><input type="submit" value="提交" name="B1"> <input type="reset" value="全部重寫" name="B2"> <a href="buy2.jsp">買點(diǎn)別的</a> <a href="display.jsp">查看購物車</a> </P> </FORM> </BODY></HTML> 程序顯示如圖5-28所示。 圖5-28 購物網(wǎng)頁一 購物網(wǎng)頁二和上個程序類似,如程序buy2.jsp所示。 案例名稱:購物網(wǎng)頁二 程序名稱:buy2.jsp <%@ page contentType="text/html;charset=GBK" %> <HTML><BODY> <% if (request.getParameter("b1") != null ){ session.setAttribute("s4", request.getParameter("b1")); } if (request.getParameter("b2") != null ){ session.setAttribute("s5", request.getParameter("b2")); } if (request.getParameter("b3") != null ){ session.setAttribute("s6", request.getParameter("b3")); } %> 各種球大甩賣,一律八塊: <form method="POST" action="buy2.jsp"> <p><input type="checkbox" name="b1" value="籃球">籃球</p> <p><input type="checkbox" name="b2" value="足球">足球</p> <p><input type="checkbox" name="b3" value="排球">排球</p> <p><input type="submit" value="提交" name="x1"> <input type="reset" value="全部重寫" name="B2"> <a href="buy1.jsp">買點(diǎn)別的</a> <a href="display.jsp">查看購物車</a> </P> </FORM> </BODY></HTML> 程序顯示的結(jié)果如圖5-29所示。 圖5-29 購物網(wǎng)頁二 選擇幾個商品提交,程序?qū)⑸唐沸畔⒈4娴絪ession中,可以單擊“查看購物車”按鈕,結(jié)果如圖5-30所示。 圖5-30 查看購物車 顯示結(jié)果程序如程序display.jsp所示。 案例名稱:查看購物車程序 程序名稱:display.jsp <%@ page contentType="text/html;charset=GBK" %> <HTML><BODY> 你選擇的結(jié)果是: <center> <% String str = ""; if(session.getAttribute("s1") != null){ str = (String)session.getAttribute("s1"); byte b[]=str.getBytes("ISO-8859-1"); str=new String(b); out.print(str + "<br>"); } if(session.getAttribute("s2")!= null){ str = (String)session.getAttribute("s2"); byte b[]=str.getBytes("ISO-8859-1"); str=new String(b); out.print(str + "<br>"); } if(session.getAttribute("s3")!=null){ str = (String)session.getAttribute("s3"); byte b[]=str.getBytes("ISO-8859-1"); str=new String(b); out.print(str + "<br>"); } if(session.getAttribute("s4")!=null){ str = (String)session.getAttribute("s4"); byte b[]=str.getBytes("ISO-8859-1"); str=new String(b); out.print(str + "<br>"); } if(session.getAttribute("s5")!=null){ str = (String)session.getAttribute("s5"); byte b[]=str.getBytes("ISO-8859-1"); str=new String(b); out.print(str + "<br>"); } if(session.getAttribute("s6")!=null){ str = (String)session.getAttribute("s6"); byte b[]=str.getBytes("ISO-8859-1"); str=new String(b); out.print(str + "<br>"); } %> </center> </BODY></HTML> 該程序中做了一個判斷,如果session中有值的話(不是null)就輸出到瀏覽器上。 |
|
來自: 鳳舞天煌 > 《WEB技術(shù)》