关于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范围内的属性可以在多个页面之间共享。

实验效果:

 

posted @ 2018-04-01 21:52  babyboss5  阅读(129)  评论(0编辑  收藏  举报