其实都可以.
如果是ResultSet,可以在model中执行数据库查询,获取ResultSet,例如:
setResultSet(resultSet);
待Controller将流程交付给JSP视图时,可以用getResultSet()将结果集获取,
在JSP的最后别忘了关闭连接.
如果用ArrayList返回结果集,
ResultSet rst = statement.selectQ(sb.toString());
         ArrayList mapList= new ArrayList();
while (rst.next()) 
{
     xxxBean tmpspb = new xxxBean();
     tmpspb.setxxx(rst .getString("xxx"));
              tmpspb.setyyy(rst .getString("devicename"));
     mapList.add(tmpspb);
     tmpspb = null;
}可以用struts的iterate标签,例如:
                     <logic:iterate id="pl" type="package.PerBean" 
                         name="Bean" property="mapList" scope="session"> 
                         <html:option  value="<%=pl.getxxx()%>"> 
                         <bean:write name="pl" property="yyy"/> 
                      </html:option> </logic:iterate> 

解决方案 »

  1.   

    最好还是用Bean,然后转成集合。比较自然,不过结果集不要太大
      

  2.   

    request.setAttribute("")
    session.setAttribute("")
      

  3.   

    同意,不过现在我的问题是放在request里,在jsp也面取不到,怎么回事啊
      

  4.   

    有时候为了方便,我还使用javabean直接生成一部分输出页面。
    还有就是很多是使用List来放置若干个数据对象。
      

  5.   

    使用DTO(DataTransferObject)获取记录集的结果,然后再使用session读取。
      

  6.   

    回复人: morgonhe(天梁星) ( ) 信誉:100  2003-07-19 13:19:00  得分:0 
     
     
      其实都可以.
    如果是ResultSet,可以在model中执行数据库查询,获取ResultSet,例如:
    setResultSet(resultSet);
    待Controller将流程交付给JSP视图时,可以用getResultSet()将结果集获取,"""""""""""在JSP的最后别忘了关闭连接. """""""""""""
    如果是将resultset送到jsp视图怎么关闭连接?好象关了resultset 也不会释放连接啊
      

  7.   

    对于数据较多的情况,如数据库查询结果,一种较好的做法是把数据放在request范围bean内,bean数据通过interface接口实现枚举,在JSP文件中用struts的iterate标签枚举所有数据,通过iterate标签也很容易实现数据的分页显示。Struts1.1自带的例子是就这样做的。
      

  8.   

    一般都是通过session或者request的
      

  9.   

    对于将查询结果提交到页面显示这个问在在struts里要可以用两个情况,对于如果页面有actionform对应,那我们就只要填充actionform的值,然后 保存在对应的request或session相应的属性中就可以了。页面自动会取出数据并显示出来,当前forward的redirect属性必须为false,如:
    ActionForm uform=new LineForm();
    LineManager lineManager=new LineManager();
    LineVo vo=lineManager.findLine(req.getParameter("selects"));
    PropertyUtils.copyProperties(uform,vo);
    if ("request".equals(map.getScope())){
    req.setAttribute(map.getAttribute(),uform);
    }else{
    req.getSession().setAttribute(map.getAttribute(),uform);
    }
    别一种方法是就是最一般的,用request,session的attribute来保存数据,在页面取出并显示。
      return mapping.findForward("updateLine");
      

  10.   

    目前我们使用了两种方法
    1、一脚踹到客户端
    2、ArrayList+logic:iterate
      

  11.   

    在FORM BEAN 中设置LIST类型字段,在ACTION中取到RS,放到FORM BEAN中,并不需要显式的传递给RESPONSE,STRUTS替我们做了数据的传递,在JSP页中用TAG声明FORM BEAN,用TAG,循环取数据.我想这才是一中比较自然的MVC做法.好处是,JSP随便换.
      

  12.   

    这个其实和Struts的Framwork没有关系,有各种Tag,最省事的方法就是直接吧Resultset踹到页面上,不过那样不便于管理而已
      

  13.   

    看了以上大家的建议,我觉得把ResultSet返回给页面不是一种很好的做法,
    返回Collection(包含多个ValueObject,或者自己封装一个DataModel,返回DataModel也行),比较好~~,不知道大家对我的意见如何?
      

  14.   

    同意 cxhz_cn(NetBeansBoy)的意见,我目前就是这样作的,但是这就必须用到VO模式,不知楼主类的设计,呵呵。还有,记得用struts的〈logic;iterator>
      

  15.   

    同意 kui(kui) 的看法,使用<logic;iterator>标签就可以了。
      

  16.   

    写个bean包括你结果集的所有字段,然后把值set到bean中,然后arrayListName.add(bean),然后
    request.setAttribute("response",res);
    把你想要的结果集arrayListName放到res中,在jsp上写
    <logic:present name="response" property="arrayListName" scope="request">
    <logic:iterate id="item"  name="response" property="arrayListName" scope="request" TYPE="XX.XX.XX.XX.bean">试试吧!
      

  17.   

    我个人认为不用session,如果结果集大了..服务器能不能得起?如果运行一个月.半年呢?..内存会玩完的.