2014-12-13 1 views
0

나는 shopping 웹 응용 프로그램을 만드는 중이라서가 HTTP를 :, 내가 여기에 첫 번째 HTML 양식 세션 계산

<!DOCTYPE html> 
<html> 
<head> 
    <META HTTP-EQUIV="Pragma" CONTENT="no cache"> 
    <META HTTP-EQUIV="Cache-control" 
      CONTENT="no cache"> 
    <META HTTP-EQUIV="Expires" CONTENT="0"> 
    <TITLE>Shopping Cart</TITLE> 
    <title> Shopping Cart </title> 
</head> 
<body> 
<center> 
    <h3> Simple Shopping Cart </h3> 

    <form method=post action="Selection"> 

     <table> 
      <tr> 
       <td> 
        <input type="radio" name="Product" value="Apples" checked> 
        <font color=blue> Apples </font> 
       </td> 
      </tr> 

      <tr> 
       <td> 
        <input type="radio" name="Product" value="Pears"> 
        <font color=blue> Pears </font> 
       </td> 
      </tr> 
      <tr> 
       <td> 
        <input type="radio" name="Product" value="Checkout"> 
        <font color=blue> Go To the checkout </p> </font> 
       </td> 
      </tr> 
     </table> 
     <BR><BR><BR> 
     <input type="submit" value="Submit"> 
    </form> 
</center> 
</body> 
</html> 

을 그리고 이것은 내 Selection Servlet`입니다 :

@WebServlet("/Selection") 
public class Selection extends HttpServlet { 
    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { 
    String currentProduct = request.getParameter("Product"); 

    HttpSession cart = request.getSession(); 
    cart.setAttribute("currentProd", currentProduct); 

    if (currentProduct.equals("Checkout")) { 
     response.sendRedirect("Checkout"); // Send to Checkout Servlet 
    } else { 
     sendPage(response, currentProduct); //Creates page for selection of weight. 
    } 
} 

private void sendPage(HttpServletResponse reply, String product) throws IOException { 
    reply.setContentType("text/html"); 
    PrintWriter out = reply.getWriter(); 
    out.println("<HTML>"); 
    out.println("<HEAD>"); 
    out.println("<TITLE>" + product + "</TITLE>"); 
    out.println("</HEAD>"); 
    out.println("<BODY>"); 
    out.println("<CENTER>"); 
    out.println("<h1><font color=blue>" + product + " </font> </h1> "); 
    out.println("<BR><BR><BR>"); 
    out.println(" <form method=post action='Weight' "); 
    out.println("<TABLE>"); 
    out.println("<TR>"); 
    out.println(" <TD>Quantity required (kg)"); 
    out.println(" <INPUT TYPE='Text' NAME='Qty' VALUE='' SIZE=5></TD>"); 
    out.println("</TR>"); 
    out.println("</TABLE>"); 
    out.println("<BR><BR><BR>"); 

    out.println("<TABLE>"); 
    out.println("<TR>"); 
    out.println(" <TD> <INPUT TYPE = 'radio' NAME='Option' VALUE='Add' Checked> "); 
    out.println(" <FONT COLOR=blue> " 
      + "Add to cart.</FONT></TD>"); 
    out.println("</TR>"); 
    out.println("<TR>"); 
    out.println(" <TD><INPUT TYPE='Radio'" 
      + " NAME='Option' VALUE='Remove'>"); 
    out.println(" <FONT COLOR=blue> " + 
      "Remove item from cart.</FONT></TD>"); 
    out.println("</TR>"); 
    out.println("<TR>"); 
    out.println(" <TD><INPUT TYPE='Radio'" 
      + " NAME='Option' VALUE='Next'>"); 
    out.println(" <FONT COLOR=blue> " 
      + "Choose next item.</FONT></TD>"); 
    out.println("</TR>"); 
    out.println("<TR>"); 
    out.println(" <TD><INPUT TYPE='Radio'" 
      + " NAME='Option' VALUE='Checkout'>"); 
    out.println(" <FONT COLOR=blue> " 
      + "Go to checkout.</FONT></TD>"); 
    out.println("</TR>"); 
    out.println("</TABLE>"); 
    out.println("<BR><BR><BR>"); 
    out.println("<INPUT TYPE='Submit' VALUE='Submit'>"); 

    out.println("</FORM>"); 
    out.println("</CENTER>"); 
    out.println("</BODY>"); 
    out.println("</HTML>"); 
    out.flush(); 

} 
} 

그리고 마지막으로,이

@WebServlet("/Checkout") 
public class Checkout extends HttpServlet { 
    private final float APPLES_PRICE = 1.45F; 
    private final float PEARS_PRICE = 1.75F; 

    //In a real application, the above prices would be 
//retrieved from a database, of course. 
    public void service(HttpServletRequest request, 
         HttpServletResponse response) 
      throws IOException, ServletException { 
     HttpSession cart = request.getSession(); 
     response.setContentType("text/HTML"); 
     PrintWriter out = response.getWriter(); 
     out.println("<HTML>"); 
     out.println("<HEAD>"); 
     out.println("<TITLE>Checkout</TITLE>"); 
     out.println("</STYLE>"); 
     out.println("</HEAD>"); 
     out.println("<BODY>"); 
     out.println("<BR><BR><BR>"); 
     out.println("<CENTER>"); 
     out.println(
       "<H1><FONT COLOR=Blue>Order List</FONT></H1>"); 
     out.println("<BR><BR><BR>"); 
     out.println("<TABLE BGCOLOR=Aqua BORDER=2>"); 
     out.println("<TR>"); 
     out.println("<TH>Item</TH>"); 
     out.println("<TH>Weight(kg)</TH>"); 
     out.println("<TH>Cost(£)</TH>"); 
     out.println("</TR>"); 
     cart.removeAttribute("currentProd"); 

     Enumeration prodNames = cart.getAttributeNames(); 
     float totalCost = 0; 
     int numProducts = 0; 
     while (prodNames.hasMoreElements()) { 
      float wt = 0, cost = 0; 
      String product = (String) prodNames.nextElement(); 
      String stringWT = (String) cart.getAttribute(product); 
      wt = Float.parseFloat(stringWT); 

      if (prodNames.equals("Apples")) { 
       cost = APPLES_PRICE * wt; 
      } else if (prodNames.equals("Pears")) { 
       cost = PEARS_PRICE * wt; 
      } 
      out.println("<TR>"); 
      out.println("<TD>" + product + "</TD>"); 
      out.format("<TD> %4.2f </TD>%n", wt); 
      out.format("<TD> %5.2f </TD>%n", cost); 
      out.println("</TR>"); 
      totalCost += cost; 
      numProducts++; 
     } 
     if (numProducts == 0) { 
      out.println("<TD>*** No orders placed! ***</TD></TR>"); 
     } else { 
      out.println("<TD></TD>"); //Blank cell. 
      out.println("<TD>Total cost:</TD>"); 
      out.format("<TD> %5.2f </TD>%n", totalCost); 
      out.println("</TR>"); 
     } 
     out.println("</TABLE>"); 
     out.println("</CENTER>"); 
     out.println("</BODY>"); 
     out.println("</HTML>"); 
     out.flush(); 
    } 
    } 

내 문제가 calculatin에 있습니다 Checkout 서블릿이다 g가 cost이고 총 비용이 가변적입니다.

결과적으로 모든 쇼핑 결제는 Zero!

enter image description here

내 코드에 어떤 문제가 있습니까?

답변

0

ProdNames 선택한 제품을 열거하고, "Apple"과 (과) 현재 제품을 비교하고 싶습니다. 당신이 당신의 응용 프로그램을 디버깅하는 방법에 대해 살펴 보셔야 그런데

if (product.equals("Apples")) { 
    cost = APPLES_PRICE * wt; 
} else if (product.equals("Pears")) { 
    cost = PEARS_PRICE * wt; 
} 

:

if (prodNames.equals("Apples")) { // never true 
    cost = APPLES_PRICE * wt; 
} else if (prodNames.equals("Pears")) { // never true 
    cost = PEARS_PRICE * wt; 
} 

를 교체합니다. 이런 종류의 문제를 관리하는 데 도움이 될 것입니다.

관련 문제