• 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;
        }
        
    }






    数据库连接类



  • 相关阅读:
    Silverlight实用窍门系列:71.Silverlight的Style
    Silverlight实用窍门系列:70.Silverlight的视觉状态组VisualStateGroup
    PostSharp AOP编程:5.PostSharp的MethodInterceptionAspect类基本组成
    Silverlight实用窍门系列:61.Silverlight中的Trigger触发器,自定义翻页触发器
    Silverlight实用窍门系列:67.Silverlight下的Socket通讯
    使用Gitorious搭建私有代码仓库
    解决Rabbitmqserver 启动失败
    搭建代码审查系统Gerrit
    [译]5.9. Virtual Devices 虚拟设备
    [译]5.7. Initializing the Device Handling Layer: net_dev_init 设备处理层的初始化:net_dev_init
  • 原文地址:https://www.cnblogs.com/jiandanfy/p/1091970.html
Copyright © 2020-2023  润新知