Java 将对象的arraylist从servlet传递到jsp失败
在过去的三天里,这些事情已经让我头疼了。我尝试存储从数据库获得的结果集,并将其存储在对象的arraylist中,然后将其传递给jsp进行显示,但在运行程序后,出现以下错误: 有人知道如何解决这个问题吗?提前谢谢! 下面是我的代码: menu.javaJava 将对象的arraylist从servlet传递到jsp失败,java,jsp,servlets,Java,Jsp,Servlets,在过去的三天里,这些事情已经让我头疼了。我尝试存储从数据库获得的结果集,并将其存储在对象的arraylist中,然后将其传递给jsp进行显示,但在运行程序后,出现以下错误: 有人知道如何解决这个问题吗?提前谢谢! 下面是我的代码: menu.java @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExceptio
@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) {
}
}
@覆盖
受保护的void doGet(HttpServletRequest请求、HttpServletResponse响应)
抛出ServletException、IOException{
PrintWriter out=response.getWriter();
试一试{
Class.forName(“com.mysql.jdbc.Driver”);
//创建连接对象
conn=DriverManager.getConnection(request.getServletContext().getInitParameter(“url”)、request.getServletContext().getInitParameter(“用户名”)、request.getServletContext().getInitParameter(“密码”);
String sql=“从食物中选择名称、价格、图像URL”;
stmt=conn.createStatement();
rs=stmt.executeQuery(sql);
等级食品{
字符串名;
双倍价格;
字符串imageurl;
}
ArrayList foodDetail=新的ArrayList();
while(rs.next()){
食品温度=新食品();
temp.name=rs.getString(“名称”);
临时价格=rs.getDouble(“价格”);
temp.imageurl=rs.getString(“imageurl”);
添加(温度);
}
setAttribute(“菜单”,foodDetail);
RequestDispatcher req=request.getRequestDispatcher(“menu.jsp”);
请求转发(请求、响应);
}捕获(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);
}最后{
试一试{
rs.close();
stmt.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页面中删除此类食品:
class food {
String name;
double price;
String imageurl;
}
相反,尝试在jsp页面中像这样导入类食物。
并在路径中添加反斜杠:
RequestDispatcher req = request.getRequestDispatcher("/menu.jsp");
在列表
ArrayList foodDetail=new ArrayList()中使用servlet中的食物类
您试图传递的是试图在jsp本身定义的org.apache.jsp_menu$1food
中进行转换。删除jsp中的类food声明并使用
它应该与我评论的servlet中使用的内容相同。控制台中有任何错误吗?您的food类在传递的内容和尝试的内容上不同g到case in,您需要导入您在jsp的servlet中使用的食物类,而不是在jsp中定义另一个类