2016-03-29 15 views
-1

私のWebAppに何が問題なのかわかりません。これは私の最初のプロジェクトで、私はちょっと固まっています。私が知っているのは、何かが間違っているのはShoppingCart.javaです。index.htmlにカートを追加すると、それは私にシリーズ500のエラーコードを与えます。私はコンソールを見ようとしましたが、完全に理解しませんでした。それはあなたが何かを見れば非常に簡単なコードを教えてください..ですShoppingCartサーブレットにエラーがありますか?

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

URLパターンではなく http://host:port/addToCarthttp://host:port/ShoppingCartなっによる先の私はあなたが@WebServlet( "/ ShoppingCartの")を使用していると思う3210
<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

ログファイルから例外を指定してください。 – tak3shi

+0

@ tak3shiログファイルを追加しました。それを見てください.... – vinay

答えて

0

ので、私はお勧めあなたのhtmlのアクションを変更するには

<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>

希望はあなたのためにうまくいく! :)

+0

こんにちはabhishek、あなたの答えがありがとうございましたShoppingCartあなたが言及しているactaullyこのWebアプリケーションの名前..私はあなたが混乱するかもしれないと思う私のサーブレットにも同じ名前を付けました... – vinay

0

サーブレットとJSPを混在させています。あなたが本当に必要な技術について考えてみてください。 必要に応じて、このテクノロジを組み合わせることができます。ここでそれを行う方法について説明します: getOutputStream() has already been called for this response

関連する問題