jsp頁面常用的查詢及顯示方法分析
本文實(shí)例講述了jsp頁面常用的查詢及顯示方法。分享給大家供大家參考,具體如下:
背景:
1. 需要將數(shù)據(jù)庫查詢結(jié)果在JSP中以列表方式顯示
2. 在一個(gè)良好的J2EE模式中數(shù)據(jù)庫查詢一般用DAO實(shí)現(xiàn)(Data Access Object), JSP僅用于顯示數(shù)據(jù)
方法一:
建一個(gè)類,將查詢出的結(jié)果封裝到該類中,然后將該類對象添加到List中。(這個(gè)也是我最開始時(shí)用的方法,不通用且太麻煩了)。
方法二:
在介紹方法二的時(shí)候,我們先來看看如何把ResultSet轉(zhuǎn)化為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取出所有數(shù)據(jù)封裝進(jìn)Collection。
具體做法:
1. 生成一個(gè)List對象(List list = new ArrayList() )。
2. 生成一個(gè)Map對象(Map map = new HashMap() )。使用Map封裝一行數(shù)據(jù),key為各字段名,value為對應(yīng)的值。(map.put("USER_NAME"), rs.getString("USER_NAME"))
3. 將第2 步生成的Map對象裝入第1步的list對象中(list.add(map) )。
4. 重復(fù)2、3步直到ResultSet遍歷完畢
在DBUtil. resultSetToList(ResultSet rs)方法中實(shí)現(xiàn)了上述過程(所有列名均使用大寫),可參考使用。
示例代碼:
//查詢數(shù)據(jù)部分代碼:
…
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對該接口有相應(yīng)實(shí)現(xiàn),其中很有用的是oracle.jdbc.rowset.OracleCachedRowSet。 OracleCachedRowSet實(shí)現(xiàn)了ResultSet中的所有方法,但與ResultSet不同的是,OracleCachedRowSet中的數(shù)據(jù)在Connection關(guān)閉后仍然有效。
oracle的rowset實(shí)現(xiàn)在http://otn.oracle.com/software/content.html的jdbc下載里有,名稱是ocrs12.zip
示例代碼:
//查詢數(shù)據(jù)部分代碼:
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程序設(shè)計(jì)有所幫助。
相關(guān)文章
jsp利用POI生成Excel并在頁面中導(dǎo)出的示例
本篇文章主要是介紹jsp利用POI生成Excel并在頁面中導(dǎo)出的示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2016-10-10
jsp中頁面之間的跳轉(zhuǎn)forward與sendRedirect的區(qū)別
頁面之間的跳轉(zhuǎn)可以通過兩種方式實(shí)現(xiàn):forward和sendRedirect;forward:可以在JSP頁面中使用,可以在Servlet中實(shí)現(xiàn),需要的朋友可以了解下2012-12-12
jsp實(shí)現(xiàn)簡單用戶7天內(nèi)免登錄
這篇文章主要為大家詳細(xì)介紹了jsp實(shí)現(xiàn)簡單用戶7天內(nèi)免登錄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02
使用jsp:include控制動態(tài)內(nèi)容的方法
這篇文章主要介紹了使用jsp:include控制動態(tài)內(nèi)容的方法,結(jié)合實(shí)例較為詳細(xì)的分析了JSP中include偽指令的功能、定義及使用技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-11-11
jsp實(shí)現(xiàn)從服務(wù)器下載xls文件到客戶端的方法
這篇文章主要介紹了jsp實(shí)現(xiàn)從服務(wù)器下載xls文件到客戶端的方法,以完整實(shí)例形式較為詳細(xì)的分析了jsp文件下載的相關(guān)實(shí)現(xiàn)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-10-10
JavaScript實(shí)現(xiàn)圖片倒影效果 - reflex.js
本篇文章主要介紹了JavaScript實(shí)現(xiàn)圖片倒影效果,在實(shí)際中很實(shí)用,有需要的可以了解一下。2016-10-10

