仅在多次调用时实例化对象而不使用静态

时间:2014-06-08 06:17:39

标签: java list session

我想要的只是在多次调用此servlet时实例化list的对象。请不要使用static关键字,因为这里不允许这样做。

List<Cart> list=new ArrayList<Cart>();

        list.add(new Cart(name, cost));


        HttpSession s=req.getSession();
        s.setAttribute("list",list);
        out.println("item successfully added to cart");
        out.println("\n<a href=\'viewserv\'>view cart</a>");
        out.println("\n<a href=\'item\'>view item</a>");

3 个答案:

答案 0 :(得分:0)

当你将它存储到会话中时,你需要检查它已经在会话中的天气。

   HttpSession s=req.getSession();
   if(s.getAttribute("list") !=null){
   sessionList =new ArrayList<Cart>();/create new   
   }else { 
   sessionList = (List)s.getAttribute("list");
   sessionList.add(....
   }

答案 1 :(得分:0)

我猜你想要在这个servlet服务的所有HTTP请求中保持相同的对象。

只需将此对象作为servlet的实例变量,并在servlet的init方法中实例化它。

答案 2 :(得分:0)

  

我想要的是在多次调用时只实例化一次列表对象   servlet

您应初始化List init Servlet方法{/ 1}}。

List<Cart> list=null;

@Override
public void init() throws ServletException {//This method will call only once
   list=Collections.syncronizedList(new ArrayList<Cart>());
}

请注意,上述声明必须关注同步。