关于Session的另外一个例子
此例子来源于《轻量级java_EE企业应用与实战struts2_spring3_Hibernate整合开发》
可以根据这个例子加深session与cookie的理解
shop.jsp
<%--
Created by IntelliJ IDEA.
User: 无风之浪
Date: 2018/4/1
Time: 20:51
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>选择物品购买</title>
</head>
<body>
<form action="processBuy.jsp" method="post">
书籍:<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>
processBuy.jsp
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %><%--
Created by IntelliJ IDEA.
User: 无风之浪
Date: 2018/4/1
Time: 20:53
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
//取出session范围的itemMap属性
Map<String,Integer> itemMap = (Map<String,Integer>)session.getAttribute("itemMap");
//如果Map对象为空,则初始化Map对象
if (itemMap==null){
itemMap = new HashMap<String,Integer>();
itemMap.put("书籍",0);
itemMap.put("电脑",0);
itemMap.put("汽车",0);
}
//获取上一个页面的请求参数
String[] buys = request.getParameterValues("item");
//遍历数组的各元素
for (String item:buys){
if (item.equals("book")){
int num1 = itemMap.get("书籍").intValue();
itemMap.put("书籍",num1+1);
}
if (item.equals("computer")){
int num2 = itemMap.get("电脑").intValue();
itemMap.put("电脑",num2+1);
}
if (item.equals("car")){
int num3 = itemMap.get("汽车").intValue();
itemMap.put("汽车",num3+1);
}
}
//将itemMap对象放到设置成session范围内的itemMap属性
session.setAttribute("itemMap",itemMap);
%>
<html>
<head>
<title>new document</title>
</head>
<body>
您所购买的物品:
<br>
书籍:<%=itemMap.get("书籍")%>本
<br>
电脑:<%=itemMap.get("电脑")%>台
<br>
书籍:<%=itemMap.get("书籍")%>辆
<p><a href="shop.jsp">再次购买</a></p>
</body>
</html>
只要浏览器不关闭,购买信息就不会丢失。session范围内的属性可以在多个页面之间共享。
实验效果: