session对象介绍

本文演示了如何在Java Web应用中使用session对象来跟踪用户的购物车商品。示例代码展示了在jsp页面中创建购物选项,然后在proccess.jsp中处理用户选择的商品,更新session中的商品计数。session用于跨页面保持用户状态,当浏览器关闭后,session信息将丢失。推荐只在必要时使用session,对于简单页面间信息传递,request作用域更合适。

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

测试session对象

示例代码结构

shop.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Shop</title>
</head>
<body>
<form method="post" action="proccess.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="submit">
</form>

</body>
</html>

proccess.jsp

<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<%
    Map<String,Integer> itemMap = (Map<String, Integer>) session.getAttribute("itemMap");
    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();
            itemMap.put("book",num1+1);
        }
        if (item.equals("computer")){
            int num2 = itemMap.get("computer").intValue();
            itemMap.put("computer",num2+1);
        }
        if (item.equals("car")){
            int num3 = itemMap.get("car").intValue();
            itemMap.put("car",num3+1);
        }
    }
    session.setAttribute("itemMap",itemMap);
%>
<head>
    <title>Process Buy</title>
</head>
<body>
您所购买的商品<br/>
book:<%=itemMap.get("book")%><br/>
computer:<%=itemMap.get("computer")%><br/>
car:<%=itemMap.get("car")%><br/>
</body>
</html>

效果

 

 总结:

session对象代表一次用户会话,session对象是HttpSession实例。

session范围内的属性可以在多个页面跳转之间共享,浏览器关闭后session范围内属性丢失(关闭标签页不会丢)。

session属性值可以是任何可序列化的Java对象。(否则会引发不可序列化异常)

通常存放的是用户会话状态相关的信息。如果仅仅是两个页面之间交换信息,可将信息放入request范围内,通过forward实现即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值