2017-07-03 16 views
0

私はJSPとサーブレットを使ってショッピングカートを作っています。データベースからarraylistを使ってカートにアイテムを追加しています。セッションの属性の値を設定して取得することでこれを行います。しかし、値を1つ追加するだけで、出力はnullになります。この問題の解決方法を教えてください。 これは、要素がjspとサーブレットを使ってアレイリストに項目を追加する方法

ArrayList al=null; 
     HttpSession session=request.getSession(false); 
     try (PrintWriter out = response.getWriter()) { 


      String id=request.getParameter("xyz"); 
      int i=Integer.parseInt(id); 
      if (session.getAttribute("Il")==null) 
      { 

       al=new ArrayList(); 

      try{ 
      Class.forName("com.mysql.jdbc.Driver"); 
      Connection con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3307/cart","root","password"); 
      Statement st=con.createStatement(); 
      ResultSet rs=st.executeQuery("select * from cake where id="+i+""); 
      while(rs.next()) 
      { 
       Item item=new Item(); 
       item.itemid=rs.getInt(1); 
       String name=rs.getString(2); 
       item.itemname=rs.getString(2); 
       item.itemprice=rs.getString(3); 
       al.add(item); 


     } 
      session.setAttribute("Il", al); 
      con.close(); 
      RequestDispatcher rd=request.getRequestDispatcher("select.jsp"); 
      rd.forward(request, response); 
      } 
      catch(Exception e) 
      { 
       out.println(e.getMessage()); 
    } 
     } 
      else 
      { 


       try{ 
      Class.forName("com.mysql.jdbc.Driver"); 
      Connection con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3307/cart","root","password"); 
      Statement st=con.createStatement(); 
      ResultSet rs=st.executeQuery("select * from cake where id="+i+""); 
      while(rs.next()) 
      { 
       Item item=new Item(); 
       item.itemid=rs.getInt(1); 
       String name=rs.getString(2); 
       item.itemname=rs.getString(2); 
       item.itemprice=rs.getString(3); 
       al.add(item); 


     } 
      session.setAttribute("Il", al); 
      con.close(); 
      RequestDispatcher rd=request.getRequestDispatcher("select.jsp"); 
      rd.forward(request, response); 
      } 
      catch(Exception e) 
      { 
       out.println(e.getMessage()); 
    } 
      } 

これは、すべての値が表示されている私のCart.jspページでのArrayListに追加された私のCart.javaページです。少なくとも

 } else { 
      al = (ArrayList) session.getAttribute("Il"); // add this line 
      try { 
       Class.forName("com.mysql.jdbc.Driver"); 

<%-- 
    Document : Cart 
    Created on : Jul 1, 2017, 10:36:09 AM 
    Author  : hp-pc 
--%> 

<%@page import="java.util.Iterator"%> 
<%@page import="java.util.ArrayList"%> 
<%@page import="p1.Item"%> 
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
<%@ page import="java.util.*" %> 

<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <title>Cart</title> 
     <style> 
      h1{ 
       float: right; 
      } 
      </style> 

    </head> 
    <body> 
     <% 
      String name=(String)session.getAttribute("username"); 
      %> 
      <h1> 
       <%=name%> 
      </h1> 

       <table> 
       <tr> 
        <th> Select</th> 
        <th>Id</th> 
        <th> Name</th> 
        <th> Price</th> 
       </tr> 
       <form> 
        <% 
         System.out.println("testing......................."); 
     ArrayList items=(ArrayList)session.getAttribute("Il"); 
     System.out.println("success........................"+items); 
     Iterator it=items.iterator(); 

     while(it.hasNext()) 
     { 
      Item i=(Item)it.next(); 
    %> 
    <tr> 
     <td> 
       <div class="radio"> 
        <label><input type="radio" name="optradio"></label> 
       </div> 
      </td> 
     <td><%=i.itemid%></td> 
     <td><%=i.itemname%></td> 
     <td><%=i.itemprice%></td> 
    </tr> 
    <% 
     } 
     %>     
       </form> 
       </table> 



    </body> 
</html> 
+0

「1つの値を追加しています」とはどういう意味ですか? –

答えて

0

あなたがal = (ArrayList) session.getAttribute("Il");} else {後を追加する必要があります。

関連する問題