当前位置: 移动技术网 > IT编程>开发语言>Java > jsp页面常用的查询及显示方法分析

jsp页面常用的查询及显示方法分析

2017年12月08日  | 移动技术网IT编程  | 我要评论

本文实例讲述了jsp页面常用的查询及显示方法。分享给大家供大家参考,具体如下:

背景:

1. 需要将数据库查询结果在jsp中以列表方式显示
2. 在一个良好的j2ee模式中数据库查询一般用dao实现(data access object), jsp仅用于显示数据

方法一:

建一个类,将查询出的结果封装到该类中,然后将该类对象添加到list中。(这个也是我最开始时用的方法,不通用且太麻烦了)。

方法二:

在介绍方法二的时候,我们先来看看如何把resultset转化为list吧,代码如下:

private static list resultsettolist(resultset rs) throws sqlexception {
 list list = new arraylist();
 resultsetmetadata md = rs.getmetadata();
 int columncount = md.getcolumncount();
 while (rs.next()) {
  map rowdata = new hashmap();
  for (int i = 1; i <= columncount; i++) {
  rowdata.put(md.getcolumnname(i), rs.getobject(i));
  }
  list.add(rowdata);
 }
 return list;
}

遍历resultset取出所有数据封装进collection。

具体做法:

1. 生成一个list对象(list list = new arraylist() )。
2. 生成一个map对象(map map = new hashmap() )。使用map封装一行数据,key为各字段名,value为对应的值。(map.put("user_name"), rs.getstring("user_name"))
3. 将第2 步生成的map对象装入第1步的list对象中(list.add(map) )。
4. 重复2、3步直到resultset遍历完毕

在dbutil. resultsettolist(resultset rs)方法中实现了上述过程(所有列名均使用大写),可参考使用。

示例代码:

//查询数据部分代码:
…
connection conn = dbutil.getconnection();
preparedstatement pst = null;
resultset rs = null;
try{
string sql="select emp_code, real_name from t_employee where organ_id=?";
pst = conn.preparedstatement(sql);
pst.setstring(1, "101");
rs = pst.executequery();
list list = dbutil. resultsettolist(resultset rs);
return list;
}finally{
dbutil.close(rs, pst ,conn);
}
//jsp显示部分代码
<%
list emplist = (list)request.getattribute("emplist");
if (emplist == null) emplist = collections.empty_list;
%>
…
<table cellspacing="0" width="90%">
<tr> <td>代码</td> <td>姓名</td> </tr>
<%
map colmap;
for (int i=0; i< emplist.size(); i++){
colmap = (map) emplist.get(i);
%>
<tr>
<td><%=colmap.get("emp_code")%></td>
<td><%=colmap.get("real_name")%></td>
</tr>
<%
}// end for
%>
</table>

解决方法三:

使用rowset。

rowset是jdbc2.0中提供的接口,oracle对该接口有相应实现,其中很有用的是oracle.jdbc.rowset.oraclecachedrowset。 oraclecachedrowset实现了resultset中的所有方法,但与resultset不同的是,oraclecachedrowset中的数据在connection关闭后仍然有效。

oracle的rowset实现在http://otn.oracle.com/software/content.html的jdbc下载里有,名称是ocrs12.zip

示例代码:

//查询数据部分代码:
import javax.sql.rowset;
import oracle.jdbc.rowset.oraclecachedrowset;
…
connection conn = dbutil.getconnection();
preparedstatement pst = null;
resultset rs = null;
try{
……
string sql="select emp_code, real_name from t_employee where organ_id=?";
pst = conn.preparedstatement(sql);
pst.setstring(1, "101");
rs = pst.executequery();
oraclecachedrowset ors = neworaclecachedrowset();

希望本文所述对大家jsp程序设计有所帮助。

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网