今天做了一个购物车的小测试,建了一个页面shop.jsp,里面有一个选择商品的form表单。将用户选择的商品提交到另外一个页面 showthings.jsp。showthings.jsp负责将show.jsp提交过来的数据添加到session中保存,并显示用户选择的商品(从show.jsp提交过来的数据都可以显示)。在showthings.jsp中有一个链接,代码如下:<a href="shop.jsp">再次购物</a>。现在点这个链接再次选择商品并提交,发现showthings.jsp里商品的数据始终都是刚才提交的数据,并没有累加。我要求的效果是让重新选择的商品数累加。但是一直都是显示新的接交数。我发现session的数据丢失了。我想知道怎样才可以让session的数据不丢失。
代码如下:
//shop.jsp页面:
<form action="showthings.jsp" method="post">
书籍:<input type="checkbox" name="item" value="book"/>
电脑:<input type="checkbox" name="item" value="computer"/>
汽车:<input type="checkbox" name="item" value="car"/>
<input type="submit" name="sbumit" id="submit" value="提交"/>
</form>
//showthings.jsp页面
<%
Map<String , Integer> itemMap = (Map<String , Integer>)session.getAttribute("itenMap");
if(itemMap == null){
itemMap = new HashMap<String , Integer>();
itemMap.put("书籍", 0);
itemMap.put("电脑", 0);
itemMap.put("汽车", 0);
}
String[] buys = request.getParameterValues("item");
for(String str : buys){
if(str.equals("book")){
int num1 = itemMap.get("书籍").intValue();
itemMap.put("书籍", num1+1);
}
else if(str.equals("computer")){
int num2 = itemMap.get("电脑").intValue();
itemMap.put("电脑", num2+1);
}
else if(str.equals("car")){
int num3 = itemMap.get("汽车").intValue();
itemMap.put("汽车", num3+1);
}
}
session.setAttribute("itemMap", itemMap);
%>
<body>
你购物车上的物品有:<br/>
书籍:<%=itemMap.get("书籍")%>本<br/>
电脑:<%=itemMap.get("电脑")%>台<br/>
汽车:<%=itemMap.get("汽车")%>台<br/>
<a href="shop.jsp">再次购买</a>
</body
代码如下:
//shop.jsp页面:
<form action="showthings.jsp" method="post">
书籍:<input type="checkbox" name="item" value="book"/>
电脑:<input type="checkbox" name="item" value="computer"/>
汽车:<input type="checkbox" name="item" value="car"/>
<input type="submit" name="sbumit" id="submit" value="提交"/>
</form>
//showthings.jsp页面
<%
Map<String , Integer> itemMap = (Map<String , Integer>)session.getAttribute("itenMap");
if(itemMap == null){
itemMap = new HashMap<String , Integer>();
itemMap.put("书籍", 0);
itemMap.put("电脑", 0);
itemMap.put("汽车", 0);
}
String[] buys = request.getParameterValues("item");
for(String str : buys){
if(str.equals("book")){
int num1 = itemMap.get("书籍").intValue();
itemMap.put("书籍", num1+1);
}
else if(str.equals("computer")){
int num2 = itemMap.get("电脑").intValue();
itemMap.put("电脑", num2+1);
}
else if(str.equals("car")){
int num3 = itemMap.get("汽车").intValue();
itemMap.put("汽车", num3+1);
}
}
session.setAttribute("itemMap", itemMap);
%>
<body>
你购物车上的物品有:<br/>
书籍:<%=itemMap.get("书籍")%>本<br/>
电脑:<%=itemMap.get("电脑")%>台<br/>
汽车:<%=itemMap.get("汽车")%>台<br/>
<a href="shop.jsp">再次购买</a>
</body
你最后用的是itemMap2次不一样,当然不会保存了
session.getAttribute("itenMap");
肯定为空值....
1,跟踪session.getAttribute("itenMap");先确认这里是否获得值。
2,跟踪session.setAttribute("itemMap", itemMap);再确认这里是否正确设值。
如果2正确设值了1却没有获得值的话,我相信楼主应该会很快发现问题的。