46
Murach’s Java Servlets/JSP (2 nd Ed.), C23 © 2008, Mike Murach & Associat es, Inc. Slide 1 C hapter23 The C artapplication

Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

  • View
    227

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 1

Chapter 23

The Cart application

Page 2: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 2

A Product page

Page 3: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 3

The Quick Order page

Page 4: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 4

The Cart page

Page 5: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 5

The User page

Page 6: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 6

The Invoice page

Page 7: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 7

The Credit Card page

Page 8: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 8

The structure of the Cart application

DisplayCartServletcart.jsp

quick_order.jsp

CheckUserServletuser.jsp

DisplayInvoiceServletinvoice.jsp

CompleteOrderServlet

complete.jsp

SSL

credit_card.jsp

DisplayQuickOrderServlet

ProcessUserServlet

music.cart package

Page 9: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 9

The DisplayQuickOrderServlet class package music.cart; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.ArrayList; import music.business.*; import music.data.*; public class DisplayQuickOrderServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession();

Page 10: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 10

The DisplayQuickOrderServlet class (cont.) // if list of products doesn't exist, initialize it, // and store it for the remainder of the session if (session.getAttribute("products") == null) { ArrayList<Product> products = ProductDB.selectProducts(); session.setAttribute("products", products); } // forward to the Quick Order page String url = "/cart/quick_order.jsp"; RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url); dispatcher.forward(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }

Page 11: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 11

The code for the Quick Order page <jsp:include page="/includes/header.html" /> <jsp:include page="/includes/column_left_order.jsp" /> <!-- begin middle column --> <td width="570" valign="top" colspan="2"> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <h1>Quick order an album</h1> <table cellpadding="5" border="0"> <tr valign="bottom"> <th align="left">Description</th> <th align="left">Price</th> <th align="left">&nbsp;</th> </tr>

Page 12: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 12

The code for the Quick Order page (cont.) <c:forEach var="product" items="${products}"> <tr valign="top"> <td> <a href=" <c:url value='/catalog/displayProduct?productCode= ${product.code}'/>"> ${product.description} </a> </td> <td>${product.priceCurrencyFormat}</td> <td> <a href=" <c:url value='/cart/displayCart?productCode= ${product.code}'/>"> Add To Cart </a></td> </tr> </c:forEach> </table> </td>

Page 13: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 13

The code for the Quick Order page (cont.) <!-- end middle column --> <jsp:include page="/includes/footer.jsp" />

Page 14: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 14

The links from a Product page that call the DisplayCartServlet class <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <a href="<c:url value= '/cart/displayCart?productCode=${product.code}'/>"> <img src="/musicStore/images/addtocart.gif" width="113" height="47"> </a><br><br> <a href="<c:url value='/cart/displayCart'/>"> <img src="/musicStore/images/showcart.gif" width="113" height="47"> </a><br><br>

Page 15: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 15

The DisplayCartServlet class package music.cart; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import music.business.*; import music.data.*; public class DisplayCartServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String quantityString = request.getParameter("quantity"); String productCode = request.getParameter("productCode"); String removeButtonValue = request.getParameter("removeButton");

Page 16: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 16

The DisplayCartServlet class (cont.) HttpSession session = request.getSession(); Cart cart = (Cart) session.getAttribute("cart"); if (cart == null) { cart = new Cart(); session.setAttribute("cart", cart); } // If the user enters a negative or invalid number // in the Update text box, the quantity is // automatically reset to 1. int quantity = 1; try { quantity = Integer.parseInt(quantityString); if (quantity < 0) quantity = 1; }

Page 17: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 17

The DisplayCartServlet class (cont.) catch(NumberFormatException nfe) { quantity = 1; } // If the user clicks the Remove button if (removeButtonValue != null) { quantity = 0; } // Get product from product code Product product = ProductDB.selectProduct(productCode); session.setAttribute("product", product);

Page 18: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 18

The DisplayCartServlet class (cont.) // If product exists, add or remove from cart if (product != null) { LineItem lineItem = new LineItem(); lineItem.setProduct(product); lineItem.setQuantity(quantity); if (quantity > 0) cart.addItem(lineItem); else cart.removeItem(lineItem); } session.setAttribute("cart", cart); // If no items exist in cart, forward to the Quick // Order page.Otherwise, forward to the Cart page. String url = ""; if (cart.getItems().size() <= 0) { url = "/cart/displayQuickOrder"; }

Page 19: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 19

The DisplayCartServlet class (cont.) else { url = "/cart/cart.jsp"; } RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url); dispatcher.forward(request, response); } public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { doPost(request, response); } }

Page 20: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 20

The cart.jsp file <jsp:include page="/includes/header.html" /> <jsp:include page="/includes/column_left_all.jsp" /> <!-- begin middle column --> <td> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <h1>Your cart</h1> <form action="<c:url value='/cart/displayCart' />" method="post"> <table cellspacing="5" border="0"> <tr> <th align="left">Qty</th> <th align="left">Description</th> <th align="left">Price</th> <th align="left">Amount</th> </tr>

Page 21: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 21

The cart.jsp file (cont.) <c:forEach var="item" items="${cart.items}"> <tr valign="top"> <td> <input type="hidden" name="productCode" value="${item.product.code}"> <input type="text" size="2" name="quantity" value="${item.quantity}"> <input type="submit" value="Update"> </td> <td>${item.product.description}</td> <td>${item.product.priceCurrencyFormat}</td> <td>${item.totalCurrencyFormat}</td> <td><input type="submit" name="removeButton" value="Remove"></td> </tr> </c:forEach>

Page 22: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 22

The cart.jsp file (cont.) <tr> <td colspan="3"> <p><b>To change the quantity for an item</b>, enter the new quantity and click on the Update button.</p> <p><b>To remove an item</b>, click on the Remove button.</p> </td> </tr> </table> </form> <form action="<c:url value='/cart/displayQuickOrder' />" method="post"> <input type="submit" value="Continue Shopping"> </form>

Page 23: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 23

The cart.jsp file (cont.) <form action= "<c:url value= 'https://localhost:8443/musicStore/cart/checkUser' />" method="post"> <input type="submit" value="Checkout"> </form> <!-- end middle column --> <jsp:include page="/includes/footer.jsp" />

Page 24: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 24

The CheckUserServlet class package music.cart; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import music.business.*; import music.data.*; import music.util.*; public class CheckUserServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { HttpSession session = request.getSession(); User user = (User) session.getAttribute("user"); String url = "/cart/user.jsp";

Page 25: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 25

The CheckUserServlet class (cont.) // if the User object exists with address1, // skip User page if (user != null && !user.getAddress1().equals("") ) { url = "/cart/displayInvoice"; } // otherwise, check the email cookie else { Cookie[] cookies = request.getCookies(); String emailAddress = CookieUtil.getCookieValue( cookies, "emailCookie"); if (emailAddress.equals("")) { user = new User(); }

Page 26: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 26

The CheckUserServlet class (cont.) else { user = UserDB.selectUser(emailAddress); if (user != null && !user.getAddress1().equals("") ) url = "/cart/displayInvoice"; } } session.setAttribute("user", user); RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url); dispatcher.forward(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }

Page 27: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 27

The user.jsp file <jsp:include page="/includes/header.html" /> <jsp:include page="/includes/column_left_all_absolute.jsp" /> <!-- begin middle column --> <td> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <h1>Enter your name and contact information</h1> <form action="<c:url value='/cart/processUser' />" method=post> <table border="0" cellpadding="5"> <tr> <td></td> <td align=left>Required <font color=red>*</font></td> </tr>

Page 28: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 28

The user.jsp file (cont.) <tr> <td align=right>First Name</td> <td><input type="text" name="firstName" size="20" maxlength=20 value="${user.firstName}"> <font color=red>*</font></td> </tr> <tr> <td align=right>Last Name</td> <td><input type=text name="lastName" size=20 value="${user.lastName}"> <font color=red>*</font></td> </tr> . . <tr> <td align=right>Country</td> <td><input type=text name="country" size=20 value="${user.country}"> <font color=red>*</font></td> </tr>

Page 29: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 29

The user.jsp file (cont.) <tr> <td align=right>&nbsp;</td> <td><input type="button" value="Continue" onClick="validate(this.form)"></td> </tr> </table> </form> </td> <!-- end middle column --> <jsp:include page="/includes/footer.jsp" />

Page 30: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 30

The ProcessUserServlet class package music.cart; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import music.business.*; public class ProcessUserServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { String firstName = request.getParameter("firstName"); String lastName = request.getParameter("lastName"); String companyName = request.getParameter("companyName"); String emailAddress = request.getParameter("emailAddress");

Page 31: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 31

The ProcessUserServlet class (cont.) String address1 = request.getParameter("address1"); String address2 = request.getParameter("address2"); String city = request.getParameter("city"); String state = request.getParameter("state"); String zip = request.getParameter("zip"); String country = request.getParameter("country"); HttpSession session = request.getSession(); User user = (User) session.getAttribute("user"); user.setFirstName(firstName); user.setLastName(lastName); user.setEmailAddress(emailAddress); user.setCompanyName(companyName); user.setAddress1(address1); user.setAddress2(address2); user.setCity(city); user.setState(state); user.setZip(zip); user.setCountry(country);

Page 32: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 32

The ProcessUserServlet class (cont.) session.setAttribute("user", user); String url = "/cart/displayInvoice"; RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url); dispatcher.forward(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { doGet(request, response); } }

Page 33: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 33

The DisplayInvoiceServlet class package music.cart; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import music.business.*; public class DisplayInvoiceServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { HttpSession session = request.getSession(); User user = (User) session.getAttribute("user"); Cart cart = (Cart) session.getAttribute("cart"); java.util.Date today = new java.util.Date();

Page 34: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 34

The DisplayInvoiceServlet class (cont.) Invoice invoice = new Invoice(); invoice.setUser(user); invoice.setInvoiceDate(today); invoice.setLineItems(cart.getItems()); session.setAttribute("invoice", invoice); String url = "/cart/invoice.jsp"; RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url); dispatcher.forward(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { doGet(request, response); } }

Page 35: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 35

The invoice.jsp file <jsp:include page="/includes/header.html" /> <jsp:include page= "/includes/column_left_all_absolute.jsp" /> <!-- begin middle column --> <td> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <h1>Your invoice</h1> <table border="0" cellspacing="5"> <tr><td><b>Date:</b></td> <td width="400"> ${invoice.invoiceDateDefaultFormat}</td> <td></td> </tr>

Page 36: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 36

The invoice.jsp file (cont.) <tr valign="top"> <td><b>Ship To:</b></td> <td>${user.addressHTMLFormat}</td> <td></td> </tr> <tr><td colspan="3"><hr></td></tr> <tr><td><b>Qty</b></td> <td><b>Description</b></td> <td><b>Price</b></td> </tr> <c:forEach var="item" items="${invoice.lineItems}"> <tr> <td><p>${item.quantity}</td> <td><p>${item.product.description}</td> <td><p>${item.totalCurrencyFormat}</td> </tr> </c:forEach>

Page 37: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 37

The invoice.jsp file (cont.) <tr> <td><b>Total:</b></td> <td></td> <td>${invoice.invoiceTotalCurrencyFormat}</td> </tr> </table> <form action="<c:url value='/cart/user.jsp' />" method="post"> <input type="submit" value="Edit Address"> </form> <form action="<c:url value='/cart/credit_card.jsp' />" method="post"> <input type="submit" value="Continue"> </form> </td> <!-- end middle column --> <jsp:include page="/includes/footer.jsp" />

Page 38: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 38

The creditcard.jsp file <td> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <h1>Enter your credit card information</h1> <form action="<c:url value='/cart/completeOrder' />" method="post"> <table border="0" cellpadding="5"> <tr> <td align="right"><p>Credit card type</td> <td><select name="creditCardType" size="1"> <option value="Visa">Visa</option> <option value="Mastercard">Mastercard</option> <option value="AmEx">American Express</option> </select> </td> </tr>

Page 39: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 39

The creditcard.jsp file (cont.) <tr> <td align="right">Card number</td> <td><input type="text" size="20" name="creditCardNumber" maxlength="25"></td> </tr> <tr> <td align="right"><p>Expiration date (mm/yyyy)</td> <td><select name="creditCardExpirationMonth"> <option value="01">01 <option value="02">02 <option value="03">03 <option value="04">04 <option value="05">05 <option value="06">06 <option value="07">07 <option value="08">08 <option value="09">09 <option value="10">10 <option value="11">11 <option value="12">12

Page 40: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 40

The creditcard.jsp file (cont.) </select> / <select name="creditCardExpirationYear"> <c:forEach var="year" items="${creditCardYears}"> <option value="${year}">${year} </c:forEach> </select> </td> </tr> <tr> <td></td> <td align="left"> <input type="submit" value="Submit Order"></td> </tr> </table> </form> </td>

Page 41: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 41

The CompleteOrderServlet class package music.cart; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; import javax.mail.*; import music.business.*; import music.data.*; import music.util.*; public class CompleteOrderServlet extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { HttpSession session = request.getSession(); User user = (User)session.getAttribute("user");

Page 42: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 42

The CompleteOrderServlet class (cont.) Invoice invoice = (Invoice)session.getAttribute("invoice"); String creditCardType = request.getParameter("creditCardType"); String creditCardNumber = request.getParameter("creditCardNumber"); String creditCardExpMonth = request.getParameter( "creditCardExpirationMonth"); String creditCardExpYear = request.getParameter( "creditCardExpirationYear"); user.setCreditCardType(creditCardType); user.setCreditCardNumber(creditCardNumber); user.setCreditCardExpirationDate(creditCardExpMonth + "/" + creditCardExpYear);

Page 43: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 43

The CompleteOrderServlet class (cont.) // If a record for the User object exists, update it if (UserDB.emailExists(user.getEmailAddress())) { UserDB.update(user); } // Otherwise, write a new record for the User object else { UserDB.insert(user); } // Write a new invoice record InvoiceDB.insert(invoice); // Set the emailCookie in the user's browser. Cookie emailCookie = new Cookie("emailCookie", user.getEmailAddress()); emailCookie.setMaxAge(60*24*365*2*60); emailCookie.setPath("/"); response.addCookie(emailCookie);

Page 44: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 44

The CompleteOrderServlet class (cont.) // Remove all items from the user's cart Cart cart = (Cart) session.getAttribute("cart"); cart.setItems(new ArrayList<LineItem>()); // Send an email to the user to confirm the order. String to = user.getEmailAddress(); String from = "[email protected]"; String subject = "Order Confirmation"; String body = "Dear " + user.getFirstName() + ",\n\n" + "Thanks for ordering from us. " + "You should receive your order in " + "3-5 business days. " + "Please contact us if you have any questions.\n" + "Have a great day and thanks again!\n\n" + "Joe King\n" + "Fresh Corn Records"; boolean isBodyHTML = false;

Page 45: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 45

The CompleteOrderServlet class (cont.) try { MailUtil.sendMail( to, from, subject, body, isBodyHTML); } catch(MessagingException e) { this.log( "Unable to send email. \n" + "You may need to configure your system as " + "described in chapter 15. \n" + "Here is the email you tried to send: \n" + "=====================================\n" + "TO: " + to + "\n" + "FROM: " + from + "\n" + "SUBJECT: " + subject + "\n" + "\n" + body + "\n\n"); }

Page 46: Murach’s Java Servlets/JSP (2 nd Ed.), C23© 2008, Mike Murach & Associates, Inc.Slide 1

Murach’s Java Servlets/JSP (2nd Ed.), C23 © 2008, Mike Murach & Associates, Inc. Slide 46

The CompleteOrderServlet class (cont.) String url = "/cart/complete.jsp"; RequestDispatcher dispatcher = getServletContext().getRequestDispatcher(url); dispatcher.forward(request, response); } }