时间:2011-09-07
这个类写了很多的注释,不过还是要讲解一下。由于在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");
}
}
Struts1.2糞?MySQL方象 |