2014-06-08 86 views
0

我只需要在多次調用此servlet時實例化列表對象。請不要使用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>"); 
+0

請說明。我不知道你在問什麼。 –

+0

@AlexandreSantos海報提到了一個servlet。會話中單身人士會存活嗎?緩存對象可能更合適。 – metacubed

回答

0

當你正在將它存儲到會話中時,你只需要檢查它是否已經存在會話中就已經存在或不存在。

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

我猜你希望同一個對象持久地存在於此servlet所服務的所有HTTP請求中。

只需將此對象作爲您servlet的實例變量並在servlet的init方法中實例化它即可。

0

我想是在多次調用servlet的

實例列表的對象一次你應該對Servletinit方法初始化List

List<Cart> list=null; 

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

請注意,上面的聲明必須關心同步。

+0

它似乎是用戶會話特定的列表。 –

+0

@sᴜʀᴇsʜᴀᴛᴛᴀ,可能。但OP沒有提到這一點。 – Masudul

相關問題