這件事情讓我頭痛了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());
}
%>
控制檯中的任何錯誤? –
你的食物類別與你傳遞的不同,以及你想要在 –
中遇到的情況你需要導入食物類別在jsp中使用的servlet中<%@ page import =「your.package.food」%>,而不是定義另一個類別在jsp中 –