2016-03-29 19 views
-1

Ich kann nicht finden, was mit meiner WebApp falsch ist. Dies ist mein erstes Projekt und ich bin irgendwie festgefahren. Alles, was ich weiß, ist, dass etwas schief geht in ShoppingCart.java, wenn ich auf den Warenkorb in klicken, gibt es mir einen Fehlercode der Serie 500 Ich habe versucht, in die Konsole zu schauen, aber nicht vollständig verstanden. Es ist sehr einfach Code Bitte sagen Sie mir, wenn Sie etwas sehen ..ShoppingCart-Servlet gibt Fehler?

index.html

<table border="1px"> 
    <th>PIZZA NAME</th>  <th>PRICE</th> <th>ADD TO CART</th> 
    <form action="addToCart"> 
     <tr> 
      <td> Peppereno</td> 
      <td> 20$ </td> 
      <td align="center"> 
       <input type="hidden" name="name" value="peppereno"/> 
       <input type="hidden" name="price" value="20"/> 
       <input type="submit" value="Add to Cart"/> 
      </td> 
     </tr>  
    </form> 

    <form action="addToCart"> 
     <tr> 
       <td> Barbeque</td> 
       <td> 10$</td> 
       <td align="center"> 
       <input type="hidden" name="name" value="barbeque"> 
       <input type="hidden" name="price" value="10"/> 
       <input type="submit" value="Add to Cart" /> 
       </td> 

     </tr> 
    </form>  

    <form action="addToCart"> 
     <tr> 
      <td> Farmhouse</td> 
      <td> 35$ </td> 
      <td align="center"> 
       <input type="hidden" name="name" value="farmhouse"/> 
       <input type="hidden" name="price" value="35"/> 
       <input type="submit" value="Add to Cart"/> 
      </td> 
    </form> 
</table> 

Cart.java

package com.cart; 

import java.util.HashMap; 

public class Cart { 
    HashMap<String, Integer> cartItems; 

    public Cart() { 
     cartItems = new HashMap<>(); 
    } 

    public HashMap<String, Integer> getItems() { 
     return cartItems; 
    } 

    public void addToCart(String item, Integer price) { 
     cartItems.put(item, price); 
    } 

    public void deleteFromCart(String item) { 
     cartItems.remove(item); 
    } 
} 

ShoppingCart.java

package com.cartServlet; 

import com.cart.*; 

@WebServlet("/ShoppingCart") 
public class ShoppingCart extends HttpServlet { 
    private static final long serialVersionUID = 1L; 

    public ShoppingCart() { 
     super(); 
    } 

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 

     response.setContentType("text/html"); 
     HttpSession session = request.getSession(); 
     Cart shoppingCart = (Cart) session.getAttribute("cart"); 
     if (shoppingCart == null) { 
      shoppingCart = new Cart(); 
      session.setAttribute("cart", shoppingCart); 
     } 
     String name = request.getParameter("name"); 
     Integer price = Integer.parseInt(request.getParameter("price")); 
     shoppingCart.addToCart(name, price); 
     session.setAttribute("cart", shoppingCart); 

     RequestDispatcher dispatch = request.getRequestDispatcher("response.html"); 
     dispatch.include(request, response); 

     HashMap<String, Integer> items = shoppingCart.getItems(); 

     PrintWriter out = response.getWriter(); 
     out.println("<table border='1px'>"); 

     for (String key : items.keySet()) { 
      out.println("<tr><td>" + key + " - </td><td>" + "$" + items.get(key) + "</td></tr>"); 
     } 

     out.println("</table>"); 
    } 
} 

response.html

<h3>Pizza successfully added to the cart</h3> 
<form action="index.html"> 
Add more pizza to cart<input type ="submit" value="go"/> 
</form> 
<h2>Cart</h2> 

web.xml

<servlet> 
    <servlet-name>abc</servlet-name> 
    <servlet-class>com.cartServlet.ShoppingCart</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>abc</servlet-name> 
    <url-pattern>/addToCart</url-pattern> 
</servlet-mapping> 

logFile

Mar 30, 2016 7:42:26 PM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Servlet.service() for servlet [abc] in context with path  [/ShoppingCart] threw exception 
    java.lang.IllegalStateException: getOutputStream() has already been called for this response 
    at org.apache.catalina.connector.Response.getWriter(Response.java:679) 
    at org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:213) 
    at com.cartServlet.ServletCart.doGet(ServletCart.java:46) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:624) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 
    at java.lang.Thread.run(Unknown Source) 
+0

Bitte geben Sie die Ausnahme aus der Logdatei. – tak3shi

+0

@ tak3shi Ich habe das Logfile hinzugefügt bitte schauen Sie es an .... – vinay

Antwort

0

Ich glaube, Sie @WebServlet ("/ ShoppingCart") verwenden, durch die das URL-Muster http://host:port/ShoppingCart statt http://host:port/addToCart So wird schlage ich vor, Sie ändern die Aktion in Ihrem HTML mit

<form action="ShoppingCart"> <tr> <td> Farmhouse</td> <td> 35$ </td> <td align="center"> <input type="hidden" name="name" value="farmhouse"/> <input type="hidden" name="price" value="35"/> <input type="submit" value="Add to Cart"/> </td> </form>

Hoffe, dass dies für Sie arbeiten wird !! :)

+0

hallo abhishek, danke für Ihre Antwort, aber ShoppingCart Sie erwähnen, ist actaully der Name dieser Web-App .. Ich denke, Sie könnten verwirrt werden, weil ich gab meinem Servlet auch den gleichen Namen ... – vinay