struts分页

//学struts分页的时候做的 对数据库所有数据的一个分页显示    大概是不能正常运行了

fenye.jsp
<%@page pageEncoding="gb2312" %>
<html>
<body  text=green ><center><br><br><br><br><br>
    <a href="fenye.do?act=fenye">对数据库内所有的表进行分页</a>
</body>
</html>


struts-config.xml

<?xml version="1.0" encoding="gb2312" ?>
<!DOCTYPE struts-config PUBLIC
          "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
          "http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
    <form-beans>
        <form-bean name="depForm" type="form.DepForm" />
        <form-bean name="depupForm" type="form.DepupForm" />
        <form-bean name="depreForm" type="form.DepReplaceForm" />
        <form-bean name="pszcForm" type="form.PszcForm" />
    </form-beans>
    <action-mappings>
        <!--==================================部门 查询结果 跳转到 修改=== -->
        <action name="depupForm" type="action.I" path="/depup"
            scope="session" parameter="su">
            <forward name="dereplace" path="/dereplace.jsp" />
            <forward name="fail" path="/fail.jsp" />
        </action>
        <!--================================部门 查询==================  -->
        <action name="depForm" type="action.I" path="/dep"
            scope="session" parameter="str">
            <forward name="cg" path="/cg.jsp" />
            <forward name="fail" path="/fail.jsp" />
            <forward name="desu" path="/desu.jsp" />
        </action>
        <!-- =============================部门修改===================== -->
        <action name="depupForm" type="action.I" path="/depre"
            scope="session" parameter="str">
            <forward name="dereplace" path="/dereplace.jsp" />
            <forward name="fail" path="/fail.jsp" />
        </action>
            <!-- ========================= 分页技术========================  -->    
        <action name="depupForm" type="page.PageListAction" path="/haha"
            scope="session">
            <forward name="pageresult" path="/pageresult.jsp" />
            <forward name="fail" path="/fail.jsp" />
        </action>
        <!--- ======================帐号管理-注册====================== -->
        <action name="depupForm" type="action.I" path="/ps"
            scope="session" parameter="pass">
            <forward name="zcre" path="/zcre.jsp" />
            <forward name="fail" path="/fail.jsp" />
        </action>
            <!--================= 帐号注册-提交===========================-->
        <action name="pszcForm" type="action.I" path="/pszc"
            scope="session" parameter="pazc">
            <forward name="success" path="/success.jsp" />
            <forward name="fail" path="/fail.jsp" />
        </action>
                    <!-- ========================= 分页技术========================  -->    
        <action name="depupForm" type="page.PageListAction" path="/fenye"
            scope="session">
            <forward name="main" path="/main.jsp" />
            <forward name="fail" path="/fail.jsp" />
        </action>

    </action-mappings>

    <message-resources parameter="" />
</struts-config>

PageListAction
package page;

import org.apache.struts.action.*;
import action.F;
import action.Jc;

import javax.servlet.http.*;
import java.util.*;
public class PageListAction extends Action {

    List arrayList = new ArrayList();
    PageBean pd;
    
    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
    throws Exception {
        String driver_url =request.getRemoteAddr();
        String act;
        String action;
        String table;
        act=request.getParameter("act");
        table = request.getParameter("table");
        action = request.getParameter("action");
        if(act==null||act.equals(""))
        {

        /** 如果action 为空 ,即:没有点击上一页,也没有点击下一页_____判断此为页面的第一次连接 */
        if (action == null || action.equals("null")) {

            try {
                arrayList = PageBean.getAllBook(table);
            } catch (Exception e) {
                System.err.println(e);
            }
            /** 初次连接时,设置当前页数为1 ,以后点击上一页 或者下一页时 根据当前页数 进行 ++或者--操作 */
            pd = new PageBean(arrayList,table);
            List list =new ArrayList();
            list = pd.getBooks();
//        if(list == null || list .size()<=0){
//            return mapping.findForward("fail");
//    
//            }else{
                
                //页面内容
                request.setAttribute("list", pd.getBooks());
                
                //有关当前页面的信息
                request.setAttribute("page", pd);
                
                //得到此表所有列名
                request.setAttribute("lts", new F().getList(table));
//            }
        }

        else {
            /** 对 "点击下一页" 的处理 */
            if (action == "nextPage" || action.equals("nextPage")) {
                List list = pd.getNextPage();
                request.setAttribute("list", list);
                request.setAttribute("page", pd);
            }
            /** 对 "点击上一页" 的处理 */
            if (action == "previousPage" || action.equals("previousPage")) {
                List list = pd.getPreviousPage();
                request.setAttribute("list", list);
                request.setAttribute("page", pd);
            }
        }
        }
        else if(act == "fenye" || act.equals("fenye")){
            
            List list =new ArrayList();
            list = PageBean.getAllTables();
            request.setAttribute("list", PageBean.getAllTables());
            act=null;
            return mapping.findForward("main");
        
        }
        return mapping.findForward("pageresult");
    
    }
}



/**这个是pagebean类,主要负责分页算法和逻辑处理*/
package page;

import action.Jc;

import java.sql.ResultSet;
import java.util.*;

public class PageBean {

    int currentPage = 1;// 当前页数

    String table="";
    
    public int totalPages = 0;// 总页数

    int pageRecorders = 15;// 每页显示行数

    int totalRows = 0;// 总行数

    int pageStartRow = 0;// 每页的起始行数

    int pageEndRow;// 每页的终止行数

    boolean hasNextPage = false;// 是否有下一页

    boolean hasPreviousPage = false;// 是否有前一页

    List arrayList;

    Iterator it;

    public PageBean(List arrayList,String table) {
        this.table = table ;
        /**根据list 对第一次连接进行设置:
         * |总页数|是否有上下页|起始行数|
         * */  
        this.arrayList = arrayList;// 获得传来的list

        totalRows = arrayList.size();// 总行数 = list 的长度

        it = arrayList.iterator();// 迭代器

        hasPreviousPage = false;// 是否有前一页

        currentPage = 1;// 当前页数
        
            
        if ((totalRows % pageRecorders) == 0) {// 如果 总行数 %每页显示行数 == 0

            totalPages = totalRows / pageRecorders;// 总页数 = 总行数/每页显示行数

        }

        else {

            totalPages = totalRows / pageRecorders + 1; // 总页数 = ( 总行数/每页显示行数)+1

        }
        
        /**根据当前页数 和总页数  判断 是否有下一页*/
        if (currentPage >= totalPages) { // 如果当前页数 > = 总页数

            hasNextPage = false; // 没有下一一页

        }

        else {

            hasNextPage = true; // 有下一页

        }

        if (totalRows < pageRecorders) { // 如果 总行数小于每页显示行数

            this.pageStartRow = 0;// 起始行数= 0

            this.pageEndRow = totalRows;// 终止行数 =总行数

        }

        else {// 如果 总行数 大于 每页显示行数

            this.pageStartRow = 0;// 起始行数= 0

            this.pageEndRow = pageRecorders;// 终止行数 =每页显示数

        }

    }

    public void setCurrentPage(int currentPage) {

        this.currentPage = currentPage;// 设置当前页数

    }

    public void setPageRecorders(int pageRecorders) {

        this.pageRecorders = pageRecorders; // 设置每页显示数

    }

    public void setHasNextPage(boolean hasNextPage) {

        this.hasNextPage = hasNextPage;// 设置 是否有下一页

    }

    public void setHasPreviosPage(boolean hasPreviosPage) {

        this.hasPreviousPage = hasPreviousPage; // 设置是否有前一页

    }

    public String getCurrentPage() {

        return this.toString(currentPage);// 获得当前页数

    }

    public String getTotalPages() {

        return this.toString(totalPages); // 获得总页数

    }

    public String getTotalRow() {

        return this.toString(totalRows);// 获得总行数

    }

    public int getPageRecorders() {

        return pageRecorders;// 获得每页显示数

    }

    public int getPageEndRow() {

        return pageEndRow;// 获得每页的终止数

    }

    public int getPageStartRow() {

        return pageStartRow;// 获得每页的起始数

    }

    public boolean isHasNextPage() {

        return hasNextPage; // 判断 是否有下一页

    }

    public boolean isHasPreviousPage() {

        return hasPreviousPage; // 判断 是否有上一页

    }
    /**
     * 下面的两个方法  是处理        点击(上一页|下一页)
     * 首先获得 此页的页数 并判断是否有上下页
    然后 根据页数,返回此页的信息*/
    public List getNextPage() {// 获得下一页

        currentPage = currentPage + 1;// 设置下一页的(当前页数)=当前页数+1

        if ((currentPage - 1) > 0) {// 如果当前页数大于 1

            hasPreviousPage = true;// 有上一页

        }

        else { // 如果当前页数小于等于 1

            hasPreviousPage = false; // 没有上一页

        }

        if (currentPage >= totalPages) { // 如果 当前页数 大于 总页数

            hasNextPage = false;// 没有下一页

        }

        else {// 如果 当前页数 小于 总页数

            hasNextPage = true;// 有下一页

        }

        List list= getBooks();

        return list;         

    }

    public List getPreviousPage() {// 获得上一页

        currentPage = currentPage - 1; // 当前页数 - 1

        if (currentPage == 0) {// 如果当前页数为 0

            currentPage = 1;// 当前页数 = 1

        }

        if (currentPage >= totalPages) {// 如果 当前页数 大于 总页数

            hasNextPage = false;// 没有下一页

        }

        else {// 如果 当前页数 小于 总页数

            hasNextPage = true;// 有下一页

        }

        if ((currentPage - 1) > 0) { // 如果当前页数大于 1

            hasPreviousPage = true;// 有 上一页

        }

        else {// 如果当前页数小于 1

            hasPreviousPage = false; // 没有上一页

        }

        List list= getBooks();

        return list;

    }

    /**
     * .----------------------------------------------------------------------------------------------------------- * * *
     * -----------------------------------------------------------------------------------------------------------
     */

    public List getBooks() {/** 此方法是获得一个(含有当前页 所有信息的)list*/
        if (currentPage * pageRecorders < totalRows) {// 如果当前页数 * 每页显示行数 < 总行数

            pageEndRow = currentPage * pageRecorders;// 每页的终止行数 = 页数 * 每页显示行数

            pageStartRow = pageEndRow - pageRecorders;// 每页的起始行数 =每页的终止行数 -每页显示行数

        }

        else {// 如果当前页数 * 每页显示行数 >= 总行数

            pageEndRow = totalRows;// 每页的终止行数 = 总行数

            pageStartRow = pageRecorders * (totalPages - 1);// 每页的起始行数 =每页显示行数 *( 总页数 - 1 )

        }
            List list=new ArrayList();
        for (int i = pageStartRow; i < pageEndRow; i++) {
            if(arrayList.size()==0){
                System.err.println("查询结果显示,此表中 没有任何信息!");
                return null;
            }
            list.add(arrayList.get(i)) ;// 把每一行 放入另一list
        }

        return list;
    }

    public String toString(int temp) {

        String str = Integer.toString(temp);// 把数字转成字符型

        return str;

    }

    public String getTable() {
        return table;
    }

    public void setTable(String table) {
        this.table = table;
    }

    public int getTotalRows() {
        return totalRows;
    }

    public void setTotalRows(int totalRows) {
        this.totalRows = totalRows;
    }

    public void setHasPreviousPage(boolean hasPreviousPage) {
        this.hasPreviousPage = hasPreviousPage;
    }

    public void setPageEndRow(int pageEndRow) {
        this.pageEndRow = pageEndRow;
    }

    public void setPageStartRow(int pageStartRow) {
        this.pageStartRow = pageStartRow;
    }

    public void setTotalPages(int totalPages) {
        this.totalPages = totalPages;
    }
    public static List getAllBook(String table) throws Exception {

        String sql = "select * from " + table;
        
        return Jc.getResult(sql,table);
    }
    
    
    public static List getAllTables()throws Exception{
        List list= new ArrayList();
        
        String sql = "select * from information_schema.tables";
        ResultSet rs = Jc.getResultSet(sql);
        
        while(rs.next()){
            String a = rs.getString("TABLE_SCHEMA");
             String b =rs.getString("TABLE_NAME");
             list.add(a+"."+b);
        }
        Jc.close();
        return list;
    }
    
}






数据库连接类



posted @ 2008-03-05 15:39  简单飞扬-  阅读(508)  评论(0编辑  收藏  举报