session内置对象JSP学习

1、session对象代表一次用户会话。一次用户会话是指:从客户端浏览器链接服务器开始,到客户端浏览器与服务器断开为止,这个过程就是一次对话。

2、session通常用于跟踪用户的会话信息,如判断用户是否登录系统,或者在购物车应用中,用于跟踪用户购买的商品

3、session范围内的属性可以在多个页面之间共享。一旦关闭浏览器,即session结束,session范围内的属性将全部丢失

4、session对象是HttpSession实例,包括两个常用的方法:①setAttribute():设置session范围内attName属性的值为attName属性的值为attValue

②getAttribute(String attName): 返回session范围内的 attName属性的值

<%@page contentType="text/html;charset=GBK" language="java"  errorPage=""%>
<!DOCTYPE html PUBLIC "-//W3C/DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>

<head>
<title>选择物品购买</title></head>
<body>
<form method="post" action="24processbuy.jsp">
	书籍:<input type="checkbox" name="item" value="book"/><br/>
	电脑:<input type="checkbox" name="item" value="computer"/><br/>
	汽车:<input type="checkbox" name="item" value="car"/><br/>
	<input type="submit" value="购买"/>

</form>

</body>

</html>

<%@page contentType="text/html;charset=GBK" language="java" errorPage=""%>
<%@page import="java.util.*" %>
<%
Map<String,Integer> itemMap = (Map<String,Integer>)session.getAttribute("itemMap");
if(itemMap == null){
	itemMap = new HashMap<String, Integer>();
	itemMap.put("书籍", 0);
	itemMap.put("电脑", 0);
	itemMap.put("汽车", 0);
}
String[] buys = request.getParameterValues("item");
if(buys != null)
for(String item: buys){
	if(item.equals("book")){
		int num1 = itemMap.get("书籍").intValue();
		itemMap.put("书籍", num1 + 1);
	}else if (item.equals("computer")){
		int num2 = itemMap.get("电脑").intValue();
		itemMap.put("电脑", num2 + 1);
	}else if(item.equals("car")){
		int num3 = itemMap.get("汽车");
		itemMap.put("汽车" , num3 + 1);
	}
}

session.setAttribute("itemMap", itemMap);
%>
<!DOCTYPE html PUBLIC "-//W3C/DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-trasitional.dtd">
<html>
<head>
<title>deal the buy </title>
</head>
<body>
你购买的商品:<br/>
书籍:<%=itemMap.get("书籍") %>本<br/>
电脑:<%=itemMap.get("电脑") %>台<br/>
汽车:<%=itemMap.get("汽车") %>辆<br/>
<a href="23sessionTest.jsp">再次购买</a>
</body>
</html>
5、itemMap放在session中保证,itemMap在一次对话中有效,这使得该购物系统可以反复购买,只要浏览器不关,购买的物品信息就不会丢失

6、不要仅仅为了两个页面之间交换信息,就将该信息放入session范围内。如果仅仅为了两个页面交换信息,可以将该信息放入request范围内,然后forward请求即可。

考虑session本身的目的,通常只应该把与用户会话状态相关的信息放入session范围内

7、session机制通常用于保存客户端的状态信息,这些状态信息需要保存到Web服务器的硬盘上,所以要求session里的属性值必须是可序列化的,否则将会引发不可序列化的异常。


你可能感兴趣的:(jsp,session,内置对象)