jsp頁面常用的查詢及顯示方法分析_JSP編程

來源:互聯網
上載者:User

本文執行個體講述了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程式設計有所協助。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.