}
//返回总页数,总页最小也等于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数据备份 数据库相关文章专题
