2013-10-29 133 views
0

嗨我試圖在我的web應用程序中實現添加到購物車機制。 所以這就是爲什麼臨時我創建了3個實現這種機制的JSP頁面。但它不能正常工作。加入購物車不起作用

我也創建了會話來唯一標識特定的用戶會話,但它並沒有實際在所有頁面中實現。

以下是我的代碼:

test.jsp的

<% 
    Random rkey = new Random(); 
    int randomkey = Math.abs(rkey.nextInt()); 
    String sdata = "keyur"+randomkey; 

    DateFormat dateFormat = new SimpleDateFormat("HHmmss"); 
    Calendar cal = Calendar.getInstance(); 

    String sess = "keyur"+randomkey+dateFormat.format(cal.getTime()); 
    session.setAttribute("KEYUR", sess); 
%> 
<% response.sendRedirect("test1.jsp"); %> 

test1.jsp

Hello <%= session.getAttribute("KEYUR")%> 

<% 
    String a="shirt",b="jeans"; 
    int a1 = 10,b1=20; 
    Double a2=100.00,b2=200.00; 
%> 
<br><br> 
A : <a href="test2.jsp?item=<%=a%>&qty=<%=a1%>&price=<%=a2%>" id="a1" name="a1">Add To Cart</a><br><br> 
A1 : <a href="test2.jsp?item=<%=b%>&qty=<%=b1%>&price=<%=b2%>" id="a2" name="a2">Add To Cart</a> 

test2.jsp

Hello <%= session.getAttribute("KEYUR")%><br><br><br><br> 

Your Cart : 
<% 
    List<String> pname = new ArrayList<String>(); 
    List<Integer> pqty = new ArrayList<Integer>(); 
    List<Double> ppr = new ArrayList<Double>(); 
%> 
<% 
    pname.add(request.getParameter("item")); 
    pqty.add(Integer.parseInt(request.getParameter("qty")));  
    ppr.add(Double.parseDouble(request.getParameter("price"))); 
    Double total=0.00; 
%> 
<br><br> 
<% 
    for(int i = 0;i < pname.size();i++) 
    { 
     String name = pname.get(i); 
     Integer qty1 = pqty.get(i); 
     Double pr1 = ppr.get(i);   
     %> 
      Name : <%= name %><br> 
      Qty : <%= qty1 %><br> 
      Price : <%= pr1 %><br><br> 
      Total : <%= total += qty1*pr1 %> 
     <%  
    } 
%> 

現在我已經採取了靜態數據,如果它會工作,那麼我會嘗試與動態數據。 任何人都告訴我爲什麼只有一個項目顯示在購物車中。 假設用戶點擊添加到購物車,然後重定向到test2.jsp並再次返回到test1.jsp,然後點擊第二個添加到購物車,然後購物車應附加不覆蓋。 但目前它是覆蓋。

任何建議,請...

回答

1

test2.jsp

List<String> pname = new ArrayList<String>(); //size is 0 

...

pname.add(request.getParameter("item")); //size is 1 

這就是爲什麼你得到的只是一個項目。

順便說一句,請你自己幫忙,不要使用JSP scriptlets;使用JSTL或編寫自己的標籤(查找Java自定義標籤)

+0

的地方,但假設我要添加多個項目,然後我就會有什麼關係? –

+0

繼續添加到pname。無論如何,這是錯誤的方法。首先,您應該有一個類來描述包裝物品,單價和數量的購物車對象,稱之爲CartItem。然後您應該使用列表並保存在會話中。最後,您應該從會話中獲取您的列表,並在列表中循環。祝你好運 – alexgrimaldi

+0

我試圖在pname中添加更多項目,但它只存儲一個項目並顯示它。我知道這是一個錯誤的方法,我知道我必須爲購物車創建單獨的類來存儲物品。我只是問,這樣可能嗎? –

0

只顯示一個項目的原因是因爲您只在List pname,pqty,ppr中插入一個項目。

按順序使用for循環來插入。所以它包含多個訂單或項目..

希望它會有所幫助。

+1

您是否從頁面Test1.jsp注意到只有一個項目添加到購物車的請求,因此在這個sictuation什麼不會工作.. –

1

這procudure尋找商店非常糟糕作弄一個購物車的物品...... 但你仍然可以儘可能多的你在列表 要存儲在您的網頁時,每一個Test2.jsp時間稱爲新keywprd用來初始化一個新的購物車清單.. 這就是爲什麼前值獲得losts .... 而不是此代碼

<% 
List<String> pname = new ArrayList<String>() 
List<Integer> pqty = new ArrayList<Integer>(); 
List<Double> ppr = new ArrayList<Double>(); 
%> 

使用減速塊decleration

<%! 
List<String> pname = new ArrayList<String>(); 
List<Integer> pqty = new ArrayList<Integer>(); 
List<Double> ppr = new ArrayList<Double>(); 
%> 

之後,你可以存儲儘可能多的你想要的....但將有可能一些重複值...刪除重複的,你可以使用設置在列表

我想你已經得到了你的查詢的答案.....

+0

簡單真棒雅力.. Tumhara代碼Badiya海..很好.. –

+0

好的確定..和bhai dhanyawad bahot jyada .. –