在Struts中实现分页的方法:

 在Struts中实现分页的方法:

假如在数据库表中有:tb_Client_sfzy       表省份编号  省份名称  省份介绍 
                                        tb_Client_csxx        省份简称    省份名称   城市名称 邮编 电话区号

      两者通过省份名称联系

      先查询操作 代码如下:QuerySfzySelectAction
                    Integer iCount = Integer.valueOf("1");//初始化
                    request.setAttribute("iCount", String.valueOf(iCount));
                    request.setAttribute("total", String.valueOf(***facade.get***DAOInstance().toatl()));//***facade.get***DAOInstance().toatl()表示的是DAO 操作模式
                    request.setAttribute("sfzylist", ***facade.get***DAOInstance().sfzySelect()); //同上
                    return mapping.findForward("querySfzySelect");

      其中toatl查询函数代码如下:
                     //显示多少条记录数
                     public int toatl() {
                         int iCount = 0;   //定义一个iCount变量  取得总该表共有多少条记录
                         String sql = SQLCode.getSQLCode("sql.sfzy.total"); //利用动态SQL查询语句  可以任意的查询不同表中的记录数
                         ResultSet rs = null;   //结果集初始化
                         try {
                           rs = connection.executeQuery(sql);   //利用DBCon类进行编写
                           while (rs.next()) {                 
                           iCount = rs.getInt("t");             //取得当前该表的记录树
                           }
                         }
                         catch (SQLException ex) {
                         }
                         connection.close();         //关闭数据库连接
                         return iCount;              //返回iCount
                       }
         和sfzySelect()查询函数代码如下:
         //显示头5条的记录数2008-7-23
           public List sfzySelect() {
             List list = new ArrayList();   //初始化List容器
             FfzyForm form = null;          //初始化省份FfzyForm类
             String sql = SQLCode.getSQLCode("sql.sfzy.select"); //同上
             try {
               ResultSet rs = connection.executeQuery(sql);//同上
               while (rs.next()) {
                 form = new FfzyForm();//同上
                 form.setSfzy_id(rs.getString(1));//同上
                 form.setSfzy_sfmc(rs.getString(2));
                 form.setSfzy_zyms(rs.getString(3));
                 list.add(form);//加载到List容器中
               }
             }
             catch (SQLException ex) {
             }
             connection.close(); //同上
             return list;        //同上
           }

 

                  
       接着处理JSP页面:
       <%int maxPage=0;  //定义总共的显示页数
      List list=(List)request.getAttribute("sfzylist");  //显示头五条的sfzylist
      int total=Integer.parseInt((String)request.getAttribute("total"));
      int iCount=Integer.parseInt((String)request.getAttribute("iCount")); //显示当前第几页
      maxPage=total;  
      if(maxPage%8==0){    //以每页为8条记录显示  判断是否为8的整数倍
            maxPage=maxPage/8;   
      }else{
            maxPage=maxPage/8+1;
      }
      %>
                     ............
      <td width="130" height="24">省份编号</td>
                      <td width="123">省份名称</td>
                      <td width="244">操作</td>
                    </tr>
                    <%for (int i=0;i<list.size();i++){
                                        FfzyForm form =(FfzyForm)list.get(i);//这就不解析了吧
                    %>
      ................
      <td height="24"><%=form.getSfzy_id()%></td>
                      <td><%=form.getSfzy_sfmc()%></td>
                      <td align="center">
        <a href="querySfzySelectOne.do?id=<%=form.getSfzy_id()%>&iCount=<%=iCount%>">查看地理位置</a>
        &nbsp;&nbsp;&nbsp;     //querySfzySelectOne查看选中的每一条的省份  并查看地理位置记录  同过action处理
        <a href="csxxSelect.do?province=<%=form.getSfzy_sfmc()%>&iCount=<%=iCount%>">查看具体城市</a></td>
                       //csxxSelect  是通过省份的province=<%=form.getSfzy_sfmc()%>来 查看当前省份的所有城市  同过action处理
      </tr>
                    <%}%>
                  </table>
                  <p>
                    <%if(iCount<=1){%>
                    <%}else{%>
                    <a href="querySfzyFenYe.do?iCount=<%=iCount-1%>">上一页</a>
                    <%}%>
                      
                    <%if(iCount>=maxPage){%>
                    <%}else{%>
                    <a href="querySfzyFenYe.do?iCount=<%=iCount+1%>">下一页</a>
                    <%}%>
                  </p>
                  <p>共<%=maxPage%>页  第<%=iCount%>页 </p>
                  <%if(iCount<=1){%> <%}else{%>
                  <p><a href="querySfzySelect.do">回到第一页</a> </p>
                  <%}%>


    还有个大东西  呵呵~~~querySfzyFenYe  处理分页的action哦~~
    用来显示上下页的
                  代码如下:
    Integer iCount = Integer.valueOf(httpServletRequest.getParameter("iCount"));//取得提交的当前页数
        Integer iCount1=new Integer( (iCount.intValue() - 1) * 8); //取得显示的到当前页面的记录 在数据库表中所占的位置
        if (iCount1.intValue() > 0) {
          List list=***facade.get***DAOInstance().sfzyFenYe(iCount1);   //分页 的操作函数
          httpServletRequest.setAttribute("iCount", String.valueOf(iCount));
          httpServletRequest.setAttribute("total", String.valueOf(***facade.get***DAOInstance().toatl()));
          httpServletRequest.setAttribute("sfzylist",list);
          return actionMapping.findForward("fenyeSuccess");
        }
        else {
          return actionMapping.findForward("fenyeFail");
        }


     //分页的操作
       public List sfzyFenYe(Integer number) {
         List list = new ArrayList();
         FfzyForm form = null;
         String sql = SQLCode.getSQLCode("sql.sfzy.fenye");
         sql = connection.editSqlCode(sql, number);
         try {
              ResultSet rs = connection.executeQuery(sql);
               while (rs.next()) {
                    form = new FfzyForm();
                     form.setSfzy_id(rs.getString(1));
                       form.setSfzy_sfmc(rs.getString(2));
                     form.setSfzy_zyms(rs.getString(3));
                     list.add(form);    //取得显示下个页面的集合
                     }
           }
             catch (SQLException ex) {
           }
            conn.close();
            return list;
        }

 

 

 

ok 结束了 希望对大家有帮助  呵呵~~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值