这是从数据库取数据的方法,我想知道jsp页面如何接受到这个结果集,并且循环遍历输出,谢谢,请详细一点
[code="java"] public List> custom(String staff){
Connection con = null;
PreparedStatement ps = null;
ResultSet rs = null;
List> list = null;
try{
con = JavaUtil.getInstence().getConnection();
String sql = "select name,linkman,contact,details,address from customer where staff = ?";
ps = con.prepareStatement(sql);
ps.setString(1, staff);
rs = ps.executeQuery();
ResultSetMetaData rsmd = rs.getMetaData();
int count = rsmd.getColumnCount();
String[] colNames = new String[count];
for(int i=0;i colNames[i] = rsmd.getColumnLabel(i+1);
}
list = new ArrayList>();
while(rs.next()){
Map map = new HashMap();
for (int i = 1; i < colNames.length; i++) {
map.put(colNames[i], rs.getObject(colNames[i]));
}
list.add(map);
}
}catch(Exception e){
e.printStackTrace();
}finally{
JavaUtil.getInstence().free(rs, ps, con);
}
return list;
}[/code]
[code="java"]
问题补充:
我用的不是servlet,就是javabean
[/code]
原来如此? 呵呵!!
那就在页面
<%
List list = 你的javaBean.custom(); //获得这个数据!
for(A a:list){
%>
<%a.getName()%>
<%
}
%>
我用的是jstl标签:
[code="html"]
${tempmap["key"].某属性}
/c:forEach
<!--取出list中map键值为key的原属的 某属性-->[/code]
希望对你有用
servlet中request.setAttribute("list",list);
页面里两种:
第一:java代码方式
最好用泛型
[code="java"]
<%
List list = (List)request.getAttribute("list");
for(A a:list){
%>
<%a.getName()%>
<%
}
%>
[/code]
第二:标准标签
页面头部引入<@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" />
然后可以在数据表现处写:
[code="java"]
${a.name}
/c:forEach
[/code]
那就在JSP里在<%%>里写java代码就可以了,如果还是想用JSTL标签的方式可以在获得LIST后,用pageContext.setAttribute("list","list");放到当前页面中,然后下面用/c:forEach一样能获得啊。
原来还是嵌套MAP的 那就直接JAVA代码吧,只要页面最上面导包完整就没有问题的,你可以拿JSP当一个类或者Servlet用的
还有一种是用:struts标签-logic
< logic:iterate id="user" name="userList">
< bean:write name="user" property="name"/>< br>
< /logic:iterate>