添加到购物车不起作用

时间:2013-10-29 10:18:18

标签: java jsp cart

您好我正在尝试在我的网络应用程序中实现添加到购物车机制。 这就是为什么临时我创建了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然后点击第二个添加到购物车然后推车应附加不覆盖。 但目前正在覆盖。

任何建议请......

3 个答案:

答案 0 :(得分:1)

<强> test2.jsp

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

...

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

这就是为什么你只得到一件物品。

顺便说一句,让自己受宠,不要使用JSP scriptlet;使用JSTL或编写自己的标签(查找Java Custom标签)

答案 1 :(得分:1)

这个看起来非常糟糕的代码存放购物车物品...... 但是你仍然可以在List中存储你想要的数量 在你的页面中每次Test2.jsp调用new keywprd时都会启动一个新的购物车列表.. 这就是为什么以前的价值迷失.... 而不是这段代码

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

使用减速块进行去除

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

之后你可以存储你想要的任何数量....但是可能会有一些重复的值...删除重复你可以在列表的地方使用Set

我认为你已经得到了你的查询答案.....

答案 2 :(得分:0)

仅显示一个项目的原因是因为您只在列表pname,pqty,ppr中插入一个项目。

使用for循环按顺序插入。所以它包含多个订单或项目..

希望它会有所帮助。