Web應用中使用session對象

        session對象表明一次用戶會話,一次用戶會話的含義是:從客戶端瀏覽器鏈接服務器開始,到客戶端瀏覽器與服務器斷開爲止,這個過程就是一個會話。session範圍內的屬性能夠在多個頁面的跳轉之間共享,一旦瀏覽器關閉,session就結束,session範圍內的屬性將所有丟失。
        使用setAttribute(String attName, Object attValue)方法設置attName屬性的值爲attValue
        使用getAttribute(String attName)方法返回session範圍內的attName屬性的值
        一般只應該把與用戶會話狀態相關的信息放入session範圍內,不要僅僅爲了兩個頁面之間交換信息,就將信息放入session範圍內,若是僅僅爲了兩個頁面交換信息,能夠將該信息放入request範圍內,而後forward請求便可。
        session機制一般用於保存客戶端狀態信息,這些狀態信息須要保存到Web服務器的硬盤上,因此要求session裏的屬性必須是可序列化的,不然將引起異常。
         以下頁面session_order.jsp用於填寫購買的商品數量,提交後轉發到session_show.jsp頁面,在該頁面顯示用戶購買的各商品的數量, session_order.jsp頁面內容以下:html

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>利用session對象保存在不一樣頁面間傳遞數據</title>
</head>
<body>
	<form method="post" action="session_show.jsp" target="_blank">
		書籍: <input type="text" name="book" /><br />
		電腦: <input type="text" name="computer" /><br />
		手機: <input type="text" name="phone" /><br />
		<input type="submit" value="購買" />
	</form>
</body>
</html>

        session_show.jsp頁面內容以下:java

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import = "java.util.*" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>從session對象中讀取數據</title>
</head>
<body>
	<%
		Map<String, Integer> cart = (Map<String, Integer>)session.getAttribute("cart");
		if(cart == null)
		{
			cart = new HashMap<String, Integer>();
			cart.put("書籍", 0);
			cart.put("電腦", 0);
			cart.put("手機", 0);
		}
		
		Enumeration<String> products = request.getParameterNames();
		
		while(products.hasMoreElements())
		{
			String productName = products.nextElement();
			if(productName.equalsIgnoreCase("book"))
			{
				int addNo = Integer.valueOf(request.getParameter(productName).trim()).intValue();
				int oldNo = cart.get("書籍").intValue();
				cart.put("書籍", oldNo + addNo);
			}
			else if(productName.equalsIgnoreCase("computer"))
			{
				int addNo = Integer.valueOf(request.getParameter(productName).trim()).intValue();
				int oldNo = cart.get("電腦").intValue();
				cart.put("電腦", oldNo + addNo);
			}
			else if(productName.equalsIgnoreCase("phone"))
			{
				int addNo = Integer.valueOf(request.getParameter(productName).trim()).intValue();
				int oldNo = cart.get("手機").intValue();
				cart.put("手機", oldNo + addNo);
			}
		}
		session.setAttribute("cart", cart);
	%>
	您所購買的物品清單:<br />
	<%
	Iterator it = cart.keySet().iterator();
	while(it.hasNext())
	{
		String key = (String)it.next();
	%>
		<%=key + ":" + cart.get(key) + "<br />"%>
	<%
	}
	%>
</body>
</html>

           點擊session_order.jsp頁面的"提交"按鈕後,跳轉到session_show.jsp頁面,在該頁面中能夠看到用戶購買的各商品數量,再次點擊"提交"按鈕或刷新session_show.jsp頁面,會看到用戶購買的各商品數量加倍。直到瀏覽器關閉。瀏覽器

相關文章
相關標籤/搜索