添加到购物车Servlet - 它是如何工作的

时间:2015-10-14 12:26:27

标签: java jsp java-ee

<%@ page import="java.util.*,com.stakoverflow.bookstore.servlets.*"%>
<html>
<body>
<center><br><br>
<h1>Book Store</h1>
<table>
<%
List books=new ArrayList();
Book book=new Book();
book.setBid(101);
book.setBname("Learn java");
book.setAuthor("dsouza");
book.setCost(99.99);
book.setCat("Java");
book.setPub("india");
book.setIsbn("11-11");
books.add(book);

book= new Book();
book.setBid(102);
book.setBname("Learn JDBC");
book.setAuthor("bsk");
book.setCost(99.99);
book.setCat("Java");
book.setPub("india-pub");
book.setIsbn("11-11");
books.add(book);


book=new Book();
book.setBid(103);
book.setBname("Learn JSP");
book.setAuthor("pintu");
book.setCost(99.99);
book.setCat("Java");
book.setPub("newage");
book.setIsbn("11-11");
books.add(book);

book=new Book();
book.setBid(104);
book.setBname("Learn EJB");
book.setAuthor("Rj");
book.setCost(99.99);
book.setCat("Java");
book.setPub("tmh");
book.setIsbn("11-11");
books.add(book);

out.println("<table>");
%>
<tr>
<td>Book ID</td>
<td>Book Name</td>
<td>Author</td>
<td>Cost</td>
<td>Cat</td>
<td>Pub</td>
<td>ISBN</td>
</tr>
<% 
Iterator it=books.iterator();
while(it.hasNext()){
    book=(Book)it.next();
%>
<tr>
<td><%=book.getBid()%></td>
<td><%=book.getBname()%></td>
<td><%=book.getAuthor()%></td>
<td><%=book.getCost()%></td>
<td><%=book.getCat()%></td>
<td><%=book.getPub()%></td>
<td><%=book.getIsbn()%></td>

**<td>
*<form action="addcart.jsp">
<input type="hidden" name="bname" value="<%=book.getBname() %>"/>
<input type="submit" value="Add To Cart"/>*
</form>**
</td>
</tr>
<%
}
out.println("</table>");
%>
<a href="placeorder.jsp">Place My Order</a>
<form action="/Lab8/showcart.jsp">
<input type="submit" value="Show My Cart"/>
</form>
</table>
</center>
</body>
</html>

对于上面的jsp代码, 我正在创建一个ArrayList对象书籍并将Book对象添加到数组列表

“/&GT;     *

当我们点击添加到购物车按钮时,value =“&lt;%= book.getBname()%&gt;如何选择不同图书的相应图书价值

根据我的理解,它应该始终发送相同的书名,

2 个答案:

答案 0 :(得分:0)

当您点击相应的&#39;添加到购物车&#39;书籍旁边的按钮,书籍所在的表格将提交给addcart.jsp。在这个jsp中,您应该使用request.getParameter("bname")获取书名,这是包含书名的隐藏字段(使用表单提交)。

这是怎么回事

答案 1 :(得分:0)

由于您正在迭代书籍,因此假设有n本书,它会创建n个表格。 在每个表单中,您将保留一个包含bookname的隐藏字段。因此,当您点击"Add to Cart"按钮后,只有该表单数据会提交到addcart.jsp,您可以使用request.getParameter("bname")访问该书名

只是一个让事情更清晰的例子

<强> any.jsp

  ....
        <body>
              <%for(int i=1;i<5;i++){ %>
              <form method ="get" action="myServlet">
              <input type="hidden" name="bname" value="<%=i %>"/>
              <input type="submit" value="Add To Cart"/>
               </form>
               <%} %>
          </body>

....

如果您看到此页面的源代码,则为

....
<body>

      <form method ="get" action="myServlet">
      <input type="hidden" name="bname" value="1"/>
      <input type="submit" value="Add To Cart"/>
       </form>

      <form method ="get" action="myServlet">
      <input type="hidden" name="bname" value="2"/>
      <input type="submit" value="Add To Cart"/>
       </form>

      <form method ="get" action="myServlet">
      <input type="hidden" name="bname" value="3"/>
      <input type="submit" value="Add To Cart"/>
       </form>

      <form method ="get" action="myServlet">
      <input type="hidden" name="bname" value="4"/>
      <input type="submit" value="Add To Cart"/>
       </form>

  </body>
  ...

我希望你知道它是如何运作的。