2016-03-02 100 views
-2

這件事情讓我頭痛了3天。我試圖來存儲我從數據庫和存儲對象的ArrayList內得到結果集,然後將它傳遞給JSP進行顯示,但在運行程序後,它給了我這個錯誤: enter image description here將對象的ArrayList從servlet傳遞給jsp失敗

人有任何想法如何解決這個問題呢?提前致謝!下面 是我的代碼: menu.java

@Override 
protected void doGet(HttpServletRequest request, HttpServletResponse  response) 
     throws ServletException, IOException { 
    PrintWriter out = response.getWriter(); 
    try { 
     Class.forName("com.mysql.jdbc.Driver"); 

     //Create connection object 
     conn = DriverManager.getConnection(request.getServletContext().getInitParameter("url"), request.getServletContext().getInitParameter("username"), request.getServletContext().getInitParameter("password")); 
     String sql = "select name,price,imageurl from food"; 
     stmt = conn.createStatement(); 
     rs = stmt.executeQuery(sql); 
     class food { 

      String name; 
      double price; 
      String imageurl; 

     } 
     ArrayList<food> foodDetail = new ArrayList<food>(); 

     while (rs.next()) { 
      food temp = new food(); 

      temp.name = rs.getString("name"); 
      temp.price = rs.getDouble("price"); 
      temp.imageurl = rs.getString("imageurl"); 

      foodDetail.add(temp); 

     } 
     request.setAttribute("menu", foodDetail); 
     RequestDispatcher req = request.getRequestDispatcher("menu.jsp"); 
     req.forward(request, response); 

    } catch (ClassNotFoundException ex) { 
     Logger.getLogger(Menu.class.getName()).log(Level.SEVERE, null, ex); 
    } catch (SQLException ex) { 
     Logger.getLogger(Menu.class.getName()).log(Level.SEVERE, null, ex); 
    } finally { 

     try { 
      rs.close(); 
      stmt.close(); 
      conn.close(); 
     } catch (SQLException ex) { 
     } 

    } 

引入了menu.jsp

<% 
     class food { 

      String name; 
      double price; 
      String imageurl; 
     } 


     ArrayList<food> foodDetail = (ArrayList<food>) request.getAttribute("menu"); 
     food temp = new food(); 
java.util.Iterator it = foodDetail.iterator(); 
     while (it.hasNext()) { 

      food z = (food) it.next(); 

      out.println(z.getName()); 


     } 


    %> 
+0

控制檯中的任何錯誤? –

+3

你的食物類別與你傳遞的不同,以及你想要在 –

+0

中遇到的情況你需要導入食物類別在jsp中使用的servlet中<%@ page import =「your.package.food」%>,而不是定義另一個類別在jsp中 –

回答

0

嘗試從JSP頁面中刪除這個類food

class food { 

     String name; 
     double price; 
     String imageurl; 
    } 

,而是嘗試導入類像這樣的食物<%@ page import="package.food " %>在你的頁面jsp中。 並添加一個反斜槓路徑:

RequestDispatcher req = request.getRequestDispatcher("/menu.jsp"); 
0

你的servlet中的食品類列表這是你試圖通過ArrayList<food> foodDetail = new ArrayList<food>();使用正試圖org.apache.jsp_menu$1food投這是在JSP定義本身。刪除類食物的jsp中的聲明並使用<%@ page import="your.package.food" %>它應該與您在servlet中使用的相同,正如我所評論的。