// Get the user's session and shopping cart
HttpSession session = request.getSession(true);
ShoppingCart cart = (ShoppingCart)session.getValue(session.getId());
// If the user has no cart, create a new one
if (cart == null) {
cart = new ShoppingCart();
session.putValue(session.getId(), cart);
}
// set content type header before accessing the Writer
response.setContentType("text/html");
PrintWriter out = response.getWriter();
//Print out the response
out.println("<html>" +
"<head><title>Your Shopping Cart</title></head>" +
"<body bgcolor=\"#ffffff\">" +
"<center> <hr> <br> " +
"<h1>" +
"<font size=\"+3\" color=\"red\">Duke's </font>" +
"<font size=\"+3\" color=\"purple\">Bookstore</font>" +
"</h1>" +
"</center>" +
"<br> <hr> <br> ");
/* Handle any pending deletes from the shopping cart and
indicate the outcome as part of the response */
String bookId =request.getParameter("Remove");
if (bookId != null) {
cart.remove(bookId);
BookDBServlet database = (BookDBServlet)
getServletConfig().getServletContext().getServlet("bookdb");
BookDetails book = database.getBookDetails(bookId);
out.println("<font color=\"#ff00000\" size=\"+2\">" +
"You just removed: <strong>" + book.getTitle() +
"</strong> <br> <br>" +
"</font>");
} else if (request.getParameter("Clear") != null) {
cart.clear();
out.println("<font color=\"#ff0000\" size=\"+2\"><strong>" +
"You just cleared your shopping cart!" +
"</strong> <br> <br> </font>");
}
// Print a summary of the shopping cart
int num = cart.getNumberOfItems();
if (num > 0) {
out.println("<font size=\"+2\">" +
"You have " + num + (num==1 ? " item" : " items") +
" in your shopping cart </h2>" +
"<font>");
// Return the Shopping Cart Nice and Pretty
out.println("<table>" +
"<tr>" +
"<th align=left>Quantity</TH>" +
"<th align=left>Title</TH>" +
"<th align=left>Price</TH>" +
"</tr>");
Enumeration e = cart.getItems();
while (e.hasMoreElements()) {
ShoppingCartItem item = (ShoppingCartItem) e.nextElement();
BookDetails bookDetails = (BookDetails) item.getItem();
out.println("<tr>" +
"<td align=\"right\" bgcolor=\"#ffffff\">" +
item.getQuantity() +
"</td>" +
"<td bgcolor=\"#ffffaa\">" +
"<strong><a href=\"" +
response.encodeUrl("/servlet/bookdetails?bookId=" +
bookDetails.getBookId()) +
"\">" + bookDetails.getTitle() + "</a></strong>" +
"</td>" +
"<td bgcolor=\"#ffffaa\" align=\"right\">" +
Cashier.format(bookDetails.getPrice()) +
"</td>" +
"<td bgcolor=\"#ffffaa\">" +
"<strong>" + "<a href=\"" +
response.encodeUrl("/servlet/showcart?Remove=" +
bookDetails.getBookId())
+ "\">Remove Item</a></strong>" +
"</td></tr>");
}
// Print the total at the bottom of the table
Cashier cashier = new Cashier(cart);
out.println("<tr><td colspan=\"5\" bgcolor=\"#ffffff\">" +
"<br></td></tr>" +
"<tr>" +
"<td colspan=\"2\" align=\"right\"" +
"bgcolor=\"#ffffff\">" +
"Subtotal:</td>" +
"<td bgcolor=\"#ffffaa\" align=\"right\">" +
cashier.format(cashier.getAmount()) + "</td>" +
"</td><td><br></td></tr>" +
"<tr>" +
"<td colspan=\"2\" align=\"right\"" +
"bgcolor=\"#ffffff\">" +
"CA Sales Tax:</td>" +
"<td bgcolor=\"#ffffaa\" align=\"right\">" +
cashier.format(cashier.getTax()) + "</td>" +
"</td><td><br></td></tr>" +
"<tr>" +
"<td colspan=\"2\" align=\"right\"" +
"bgcolor=\"ffffff\">" +
"<font color=\"ff0000\">" +
"<strong>Grand Total:</strong></font></td>" +
"<td bgcolor=\"ffffaa\" align=\"right\">" +
cashier.format(cashier.getTotal()) + "</td>" +
"</td><td><br></td></tr>" +
"</table>");
// Where to go and what to do next
out.println("<p> <p><a href=\"" +
response.encodeUrl("/servlet/catalog") +
"\">See the Catalog</a> " +
"<a href=\"" +
response.encodeUrl("/servlet/cashier") +
"\">Check Out</a> " +
"<a href=\"" +
response.encodeUrl("/servlet/showcart?Clear=clear") +
"\">Clear Cart</a>");
} else {
// Shopping cart is empty!
out.println("<font size=\"+2\">" +
"There is nothing in your shopping cart.</font>" +
"<br> <br>" +
"<center><a href=\""+
response.encodeUrl("/servlet/catalog") +
"\">Back to the Catalog</a> </center>");
}
out.println("</body> </html>");
out.close();