请问:
想实现‘对后台查询数据库的结果集封装(类似:DataSetImpl),并且封装后的对象,放到request范围后,
在jsp中利用类似struts的logic:iterate标签方式迭代出来’的思路或实例。注:
1、在strus1.2环境中;
2、高效。请高手赐教!

解决方案 »

  1.   

    用ArrayList+javabean
    例如表数据为
    列1 列2
    a   b
    c   d
    javabean类,两个属性 
    列1,列2。
    ArrayList中放入表数据每一行对应的javabean对象,就可以了。
    页面用logic:iterate循环就可以了,循环中需要显示值的地方的value值与bean里的属性名一样就可以了。
      

  2.   

    感谢楼上的回复,但是,不封装ResultSet的话,就做不了通用的。
    我想把她变成个通用的。请问该怎么做?
      

  3.   

    对你的resultSet循环,将循环出的数据通过apache下的Commons 子项目的BeanUtils将每一行数据封装为动态bean,然后放到request供页面循环显示就可以了。
      

  4.   

    将List存放到request中后,在页面中用struts标签就可以迭代出来。
      

  5.   

    <logic:iterator id="" name="" property="">
        <bean:write name="">
    </logic:iterator><logic:iterator id="" name="" property="">  id是要显示的值,与<bean:write>的name属性值相等就行了,随便定义。
    name属性是集合的名称,比如你是要显示一个ArrayList集合,这就是集合名字。
    property是集合的属性ArrayList里存储的是对象的话,它就是对象的属性。好像清楚了。
      

  6.   

    自己封装的VO:public class UserVO{
       private String username;
       private String address;
       private String phone;  //get And set
      //……
    }
    DataSetImpl封装查询结果为VO部分的代码:
    String sql = "select A.username,B.address,B.phone from tb_user A,user_info B where A.id = B.id;"Query query = session.createSQLQuery(sql);List list = query.list();List<UserVO> resultList = new ArrayList<UserVO>();
    UserVO vo = null;
    for(int i=0;i<list.size();i++){
       vo = new UserVO();
       Object[] temp = (Object[])list.get(i);
       vo.setUsername(temp[0].toString());
       vo.setAddress(temp[1].toString());
       vo.setPhone(temp[2].toString());
       resultList.add(vo);
       vo=null;
       temp = null;
    }
    return resultList;action里面、JSP页面就跟处理普通的单表查询结果一样了。