把记录集和其他需要的信息放在一个javabean中
在jsp页面中用tag显示出来
------------------
ArrayList rows=null;
while(rs.next()){
   HashMap row = new HashMap();
   row.put("...",rs.getXXX(...))
   .
   .
   ArrayList.add(row);
}
ListInfo listInfo = new ListInfo(rows);
request.setAttribute("listInfo",listInfo);

解决方案 »

  1.   

    使用request,session,ServletContext都可以,不过如果使用request的话必须使用
    Dispatcher转向,如:
    request.setAttribute("myRS",rs);
    request.getRequestDispatcher("next.jsp").forward(request, response);
    然后在next.jsp接收:
    ResultSet rs=(ResultSet)request.getAttribute("myRS");
      

  2.   

    如果使用SERVLET的转向,则用REQUEST。SETATTRIBUTE()
    context不要用,servletcontext是每个虚拟机每个WEB应用程序一个唯一的对象,会冲突
    session尽量少用,影响性能
    用不用BEAN封装取决于你(封装更符合MVC的思想)
    good luck
      

  3.   

    得到session值以后,为什么不能删除?
      

  4.   

    beyond_xiruo(乱谈情) 的做法很有问题的`~~用Rs传 snicker(我得意的笑) 的还不错。
    不过我是否把Rs映射成一个DataModel,看看J2SE的AbstractTableModel的模式,然后传~~~请赐教
      

  5.   

    不过我是否把Rs映射成一个DataModel,看看J2SE的AbstractTableModel的模式,然后传~~~?
    等待这个问题的解决方案?
      

  6.   

    1) 建议用request, 如同 beyond_xiruo(乱谈情) 所说的
    2) 如果将 ResultSet 在 request 中传递, 那么会发生的问题是你不能及时关闭产生这个 ResultSet 的 Connection, 这会带来很多隐患, 建议你传递时把Rs映射成一个DataModel
    3) 把Rs映射成一个DataModel有一个现成的方案就是使用 RowSet, 以下代码可供你参考, 注意它要使用Sun的sun.jdbc.rowset包, 可以在 http://developer.java.sun.com/developer/earlyAccess/crs/ 下载, 你也可以看这篇文章 http://developer.java.sun.com/developer/technicalArticles/javaserverpages/cachedrowset/ , 中文的文章也是有的 http://www.javacool.com/rli/show.jsp?id=90
        /**
         * 执行一个查询语句,返回一个RowSet.
         * 建议在实际使用时, 将返回值当作一个 ResultSet 来使用
         */
        public RowSet executeQuery(String sql) throws SQLException {
            Connection m_conn = null;
            try{
                m_conn = this._getConnection() ;   //获得Connection, 具体你自己写了
                Statement stmt = m_conn.createStatement();
                ResultSet rs = stmt.executeQuery(sql);
                //将数据转移到CachedRowSet
                CachedRowSet crs = new CachedRowSet();
                crs.populate(rs);
                crs.beforeFirst();  //移到第一条记录之前
                //关闭ResultSet和Statement
                rs.close();
                stmt.close();
                //返回
                return crs;
            }
            catch (SQLException ex){
                throw ex ;  //重新抛出这个异常
            }
            finally {
                if (m_conn != null) try {m_conn.close();} catch(Exception ignore){};
            }
        }