session代表一次用户会话,其含义是:从客户端浏览器连接服务器开始,到客户端浏览器与服务器断开为止,这个过程就是一次会话。
session通常用于跟踪用户的会话信息,如判断用户是否登录系统,或者在购物车应用中,系统是否跟踪用户购买的商品等。
session里的属性可以在多个页面的跳转间共享。一旦关闭浏览器,即session结束,session里的属性将全部清空。
session对象的两个常用方法如下:
setAttribute(String attName, Object attValue): 设置一个session属性
getAttribute(String attName):返回一个session属性的值。
session通常用于跟踪用户的会话信息,如判断用户是否登录系统,或者在购物车应用中,系统是否跟踪用户购买的商品等。
session里的属性可以在多个页面的跳转间共享。一旦关闭浏览器,即session结束,session里的属性将全部清空。
session对象的两个常用方法如下:
setAttribute(String attName, Object attValue): 设置一个session属性
getAttribute(String attName):返回一个session属性的值。
下面演示了一个模拟购物车应用。shop.jsp是商品陈列页面,页面里有一个表单,表单里包含3个复选按钮,用于提交想购买的物品。其代码如下:
<%@ page contentType="text/html; charset=gb2312" language="java" %>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
<HTML>
<BODY>
<FORM METHOD=POST ACTION="ProcessBuy.jsp">
book:<INPUT TYPE="checkbox" NAME="item" value="book"><br>
computer:<INPUT TYPE="checkbox" NAME="item" value="computer"><br>
car:<INPUT TYPE="checkbox" NAME="item" value="car"><br>
<INPUT TYPE="submit" value="buy">
</FORM>
</BODY>
</HTML>
其运行结果截图如下:
ProcessBuy.jsp页面处理以上表单。利用购物车系统可以反复购买,只要不关闭,购买的物品信息就不会丢失。ProcessBuy.jsp的代码如下:
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.util.*" %>
<%
//从session对象中取出
Map<String,Integer> itemMap=(Map<String,Integer>) session.getAttribute("itemMap");
//如果Map对象为空,则初始化Map对象
if(itemMap==null)
{itemMap=new HashMap<String,Integer>();itemMap.put("book",0);itemMap.put("computer",0);itemMap.put("car",0);
}
//获取上个页面的请求参数
String[] buys=request.getParameterValues("item");
//遍历数组的各元素
for(String item : buys)
{if(item.equals("book")){int num1=itemMap.get("book").intValue();//将book对应的数量加1itemMap.put("book",num1+1);}else if(item.equals("computer")){int num2=itemMap.get("computer").intValue();itemMap.put("computer",num2+1);}else if(item.equals("car")){int num3=itemMap.get("car").intValue();itemMap.put("car",num3+1);}
}
//将itemMap对象放到session中
session.setAttribute("itemMap",itemMap);
%>
<!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN”>
<HTML>
<BODY>
The things you choose:<br>
book:<%=itemMap.get("book")%><br>
computer:<%=itemMap.get("computer")%><br>
car:<%=itemMap.get("car")%><br>
<a href="shop.jsp">choose again</a>
</BODY>
</HTML>
选中shop.jsp页面中的所有复选框,截图如下:
点击buy按钮后,页面自动跳转到ProcessBuy.jsp,显示用户已选中的各类商品数量。截图如下:
点击“choose again“按钮,跳转回shop.jsp页面,用户可以接着选择要购买的商品。之前选择的商品在关闭浏览器之前都不会消失(关闭页面也不会消失)。截图如下:
这一次,选中前两个复选框book和computer,点击buy按钮,结果截图如下: