1)我在一个模拟 HTTPGET
请求的 HTML 页面中有一个链接。(通过手动提供查询字符串。这个页面基本上调用一个 Servlet,在其doGet()
方法中完成数据库访问。SQL 查询作为查询的一部分发送细绳。
http://localhost:8080/prelim_db_test_19_3_2013/md?q=select * from test.mobile
(test
是 MySQL 数据库,mobile
是表)。
2) 然后,将结果存储在一个 ArrayList 中。
ArrayList <mobile> mylist=new ArrayList<mobile> ();
mylist.add(new mobile(rs.getInt("id"),rs.getString("name")));
wheremobile
只是一个带有id
和name
作为类变量的类(以及一个构造函数)
3)ArrayList
然后将其转发到另一个 JSP:
request.setAttribute("answer", mylist);
request.getRequestDispatcher("info.jsp").forward(request, response);
4) 现在在第二个 JSP 中,我简单地使用<c:forEach>
来迭代和打印表格内容:
<c:forEach items="${answer}" var="i">
<tr>
<td>${i.id}</td>
<td>${i.name}</td>
</tr>
</c:forEach>
但是,当我运行该项目时,会引发异常:
javax.el.PropertyNotFoundException: Property 'id' not found on type mobile
在这一行:
request.getRequestDispatcher("info.jsp").forward(request, response);
请注意,当结果打印到控制台时,数据库访问本身可以正常工作(因此 Servlet 也被我的查询字符串调用)。这是我在 Eclipse 中的项目设置(如果设置方式有任何问题):
我在这里做错了什么?
编辑 mobile.java
:
public class mobile {
int id;
String name;
public mobile(int i,String n) {
id=i;
name=n;
}
}