Struts1.2实现MySQL数据库分页

来源:本站原创 作者:佚名 2008-04-30 出处:pcdog.com

.net  apache  eclipse  java  jsp  
上一页 1 2 3 4 5 下一页 
    public static void main(String[] args) {

    }

    //返回总页数,总页最小也等于1
    public int getCount() {
         return (count == 0) ? 1 : count;
    }

    //设置总页数
    public void setCount(int count) {
         this.count = count;
    }

    //返回当前页,当前页最小也等于1
    public int getCurr() {
         return (curr == 0) ? 1 : curr;
    }
        //设置当前页
    public void setCurr(int curr) {
         this.curr = curr;
    }

    public int getRows() {
         return rows;
    }

    public void setRows(int rows) {
         this.rows = rows;
    }

    public int getSize() {
         return size;
    }

    public void setSize(int size) {
         this.size = size;
    }
    /**
     * 如果是最后一页的返回true
     * @return
     */
    public boolean isLast() {
         return (curr==count)?true:false;
    }
    public void setLast(boolean last) {
         this.last = last;
    }


    }

    这个类写了很多的注释,不过还是要讲解一下。由于在Struts的Action里用到第三个构造器,那就先讲这个吧。构造器里主要的功能是,通过Factory映射的接口类调用读取数据表的行数,获得表的所有行数。然后和传进来的页面显示信息数除一下,就获得页数的总数了。
    当前页的定义,要是第一次读取,当前页当然是第一页了,要是点了下一页,当前页就加一页,点上一页,当前页就减一面,嘿嘿。我这里主要由页面传当前页进来,再根据传进来的动作进行处理当前页。所以“下一页”这样的动作除了要传一个动作外还要传当时的当前页。
    Action 里通过调用pageDeal(“”,“”)这方法就就可以获取相应的分页处理了,当然还要加上”select * from table”这样的语句才能实现。
    好了,看下一步Action里是怎样处理的。

    第八步:Action的处理:

    在struts.action的包里创建如下类:
    package com.yourcompany.struts.action;

    import java.util.ArrayList;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;

    import com.yourcompany.dbtool.PageBean;
    import com.yourcompany.factory.PageDaoFactory;
    import com.yourcompany.vo.Product;

    public class ProductShowAction extends Action {

        public ActionForward execute(ActionMapping mapping, ActionForm form,
               HttpServletRequest request, HttpServletResponse response) {

           ArrayList aList = new ArrayList();

       /*
        * 定义页面传过来的动作,如点"下一页" 并因为这动作而决定处理
        */
       String pageDo = request.getParameter("pageDo");

           /*
            * 定义获取页面传过来的当前页getCurr
            */
           int getCurr;
           String curr_page = request.getParameter("curr_page");
           if (curr_page == null || curr_page.equals("")) {
              getCurr = 1;
           } else {
              getCurr = Integer.parseInt(request.getParameter("curr_page"));
              System.out.println(getCurr);
           }
           /*
            * 实例化PageBean对象
            * PageBean有几个构造器,不过都要传送一句获取数据库行数的SQL语句
            * getCurr是传送一个当前页给PageBean的构造器,
            * 2是定义每页显示几行数据
            */
           PageBean pb = new PageBean("select count(*) from product", getCurr,
                  2);
           // 定义查询数据库的SQL语句,格式如下
           String sql;
           sql = pb.pageDeal(pageDo, "select * from product ");
           // 定义ArrayList获取数据库所查询得到的数据

           aList = PageDaoFactory.getPageDaoIntanse().getProduct(sql);
           // 把值传给客户端
           request.setAttribute("pageInfo", pb);
           request.setAttribute("data", aList);

           return mapping.findForward("success");
           }
    }

     这个Action里也写了好多的注释,相信一看就明白。
    步骤主要是:
    1.定义两个参数,获取前台传进来的动作和当前页
    2.实例化分页的处理类,PageBean.java。在它的构造器里传进查询数据库行数的SQL语句、当前页、要在表里显示的规格。
    3.获取处理好的分页SQL语句,主要是调用PageBean里的pageDeal方法。给它传进的是页面传进来的动作和查询数据表的SQL语句。
     4.用处理好的分布SQL语句去查询数据。
     5.把值传给前台。主要返回PageBean的对象和所查询得的数据ArrayList。


更多内容请看PCdog.com--MySQL数据备份  数据库相关文章专题
上一页 1 2 3 4 5 下一页 
上一篇:Sun&MySQL全球巡展中国站正式启动
下一篇:DBA的利器:企业监控器简化MySQL管理