jsp中获取session中的map对象

最近练习书上案例,用struts2标签库获取session中键值的时候遇到了一些问题,不知道如何迭代session中的map型对象。

//CartItem.java
public class CartItem extends ActionSupport{  
    private Book book;  
    private Integer quantity;  
    private BigDecimal price;		 //省略getter setter  
}  
//Book.java
public class Book {
	private Integer bid;
	private String author;
	private String title;
	private String isbn;
	private BigDecimal price;	//省略getter setter  

}

//OrderAction.java
public String addOrder() {  //添加订单  
	//获取session中的user信息和cart订单信息
        OrderDao orderDao = new OrderDao();  
        OrderitemDao itemDao = new OrderitemDao();  
        Orderitem orderitem;  
        //存放于order订单中
        Order order=new Order();   
        order.setUserinfo(user);  
        order.setUserId(user.getUserId());  
        order.setTotal((Double) session.get("total"));  
        order.setAddress(address);  
        order.setZipcode(getZipcode());  
        try {  
            orderDao.add(order);  
            CartItem item;  
            Set keys = cart.keySet();  
            if(keys !=null){  
                Iterator iterator = keys.iterator();  
                while(iterator.hasNext()){  
                    Object key = iterator.next();  
                    item = (CartItem) cart.get(key);  
                    orderitem = new Orderitem();  
                    orderitem.setBooks(item.getBook());  
                    orderitem.setOrder(order);  
                    orderitem.setQuantity(item.getQuantity().doubleValue());  
                    itemDao.add(orderitem);  
                }  
            }  
           //......
        }  
          

在jsp中获取session中的map对象时,用value.属性值,

若要获取的对象不止一层关系,则用value.子对象类名.子对象属性名

注意此处的book是子属性的类名而不是action中的对象名

<s:iterator value="#session.allcart" id="c">  
<tr>  
    <td><s:property value="value.book.title"/></td>  
    <td><s:property value="value.book.price"/></td>  
    <td><s:property value="value.quantity"/></td>  
    <td><s:property value="value.price"/></td>  
</tr>  
</s:iterator>  



JSP session 是用于在服务器端存储用户信息的一种机制,它可以在多个请求之间共享数据。session 是通过 HttpSession 接口实现的,它的工作原理如下: 1. 当用户第一次访问某个 JSP 页面时,服务器会为该用户创建一个 session 对象,并将该 session 对象的 ID 存储在一个名为 JSESSIONID 的 cookie ,然后将该 cookie 发送给客户端。 2. 当用户发送其他请求时,客户端会自动将 JSESSIONID 的 cookie 发送给服务器,服务器会通过该 ID 来查找对应的 session 对象。 3. 当用户关闭浏览器或者 session 超时时,session 对象会被销毁,其存储的用户信息也会被清除。 在 JSP ,我们可以通过内置对象 session 来访问 session 对象,例如 session.getAttribute() 可以获取 session 存储的属性值,session.setAttribute() 可以向 session 存储属性值。session 对象是一个 Map 集合,可以存储任何类型的数据,例如基本数据类型、对象、集合等。需要注意的是,session 对象的属性值必须是可序列化的,否则会抛出 NotSerializableException 异常。 使用 session 可以方便地实现用户状态的管理,例如登录状态、购物车信息等。但是需要注意,如果 session 存储的数据过多或者过于频繁地访问 session,会占用较多的服务器资源,降低服务器的性能。因此,在使用 session 时需要注意合理使用,避免滥用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值