当前位置: 首页 > news >正文

一个实用的JSP分页

 

 

有一个页面请求action,action调用分页实现类,然后到显示分页页面

    1.以下是实现分页的类PageResultSet

    package page.bean;

    import java.util.*;

    public class PageResultSet {
     /**
      * 分页数据
      */
     private Collection data = null;

     /**
      * 当前页
      */
     private int curPage;

     /**
      * 每页显示的记录数
      */
     private int pageSize;

     /**
      * 记录行数
      */
     private int rowsCount;

     /**
      * 页数
      */
     private int pageCount;

     public PageResultSet(Collection data) {
      this.data = data;
      this.curPage = 1;
      this.pageSize = 10;
      this.rowsCount = data.size();
      this.pageCount = (int) Math.ceil((double) rowsCount / pageSize);
     }

     public PageResultSet(Collection data, int curPage) {
      this.data = data;
      this.curPage = curPage;
      this.pageSize = 10;
      this.rowsCount = data.size();
      this.pageCount = (int) Math.ceil((double) rowsCount / pageSize);
     }

     public PageResultSet(Collection data, int curPage, int pageSize) {
      this.data = data;
      this.curPage = curPage;
      this.pageSize = pageSize;
      this.rowsCount = data.size();
      this.pageCount = (int) Math.ceil((double) rowsCount / pageSize);
     }

     /**
      * getCurPage:返回当前的页数
      *
      * @return int
      */
     public int getCurPage() {
      return curPage;
     }

     /**
      * getPageSize:返回分页大小
      *
      * @return int
      */
     public int getPageSize() {
      return pageSize;
     }

     /**
      * getRowsCount:返回总记录行数
      *
      * @return int
      */
     public int getRowsCount() {
      return rowsCount;
     }

     /**
      * getPageCount:返回总页数
      *
      * @return int
      */
     public int getPageCount() {
      return pageCount;
     }

     /**
      * 第一页
      *
      * @return int
      */
     public int first() {
      return 1;
     }

     /**
      * 最后一页
      *
      * @return int
      */
     public int last() {
      return pageCount;
     }

     /**
      * 上一页
      *
      * @return int
      */
     public int previous() {
      return (curPage - 1 < 1) ? 1 : curPage - 1;
     }

     /**
      * 下一页
      *
      * @return int
      */
     public int next() {
      return (curPage + 1 > pageCount) ? pageCount : curPage + 1;
     }

     /**
      * 第一页
      *
      * @return boolean
      */
     public boolean isFirst() {
      return (curPage == 1) ? true : false;
     }

     /**
      * 最后一页
      *
      * @return boolean
      */
     public boolean isLast() {
      return (curPage == pageCount) ? true : false;
     }

     /**  * 获取当前页数据
      *
      * @return Collection
      */
     public Collection getData() {
      Collection curData = null;
      if (data != null) {
       int start = (curPage - 1) * pageSize;
       int end = 0;
       if (start + pageSize > rowsCount)
        end = rowsCount;
       else
        end = start + pageSize;
       ArrayList arrayCurData = new ArrayList();
       ArrayList arrayData = null;
       Vector vectorCurData = new Vector();
       Vector vectorData = null;
       boolean isArray = true;
       if (data instanceof ArrayList) {
        arrayData = (ArrayList) data;
        isArray = true;
       } else if (data instanceof Vector) {
        vectorData = (Vector) data;
        isArray = false;
       }
       for (int i = start; i < end; i++) {
        if (isArray) {
         arrayCurData.add(arrayData.get(i));
        } else {
         vectorData.add(vectorData.elementAt(i));
        }
       }
       if (isArray) {
        curData = (Collection) arrayCurData;
       } else {
        curData = (Collection) vectorCurData;
       }
      }
      return curData;
     }

     /**
      * 获取工具条
      *
      * @return String
      */
     public String getToolBar(String fileName) {
      String temp = "";
      if (fileName.indexOf("?") == -1) {
       temp = "?";
      } else {
       temp = "&";
      }
      String str = "<form method='post' name='frmPage' action='" + fileName + "'>";
      str += "<p align='center'>";
      if (isFirst())
       str += "首页 上一页&nbsp;";
      else {
       str += "<a href='" + fileName + temp + "cur_page=1'>首页</a>&nbsp;";
       str += "<a href='" + fileName + temp + "cur_page=" + (curPage - 1) + "'>上一页</a>&nbsp;";
      }
      if (isLast())
       str += "下一页 尾页&nbsp;";
      else {
       str += "<a href='" + fileName + temp + "cur_page=" + (curPage + 1) + "'>下一页</a>&nbsp;";
       str += "<a href='" + fileName + temp + "cur_page=" + pageCount + "'>尾页</a>&nbsp;";
      }
      str += "&nbsp;共<b>" + rowsCount + "</b>条记录&nbsp;";
      str += "&nbsp;转到<select name='page' onChange="location='" + fileName
        + temp + "cur_page='+this.options[this.selectedIndex].value">";
      for (int i = 1; i <= pageCount; i++) {
       if (i == curPage)
        str += "<option value='" + i + "' selected>第" + i + "页</option>";
       else
        str += "<option value='" + i + "'>第" + i + "页</option>";
      }
      str += "</select></p></form>";
      return str;
     }
    }


     2.一下是Action

    /*
     * Generated by MyEclipse Struts
     * Template path: templates/java/JavaClass.vtl

     */
    package struts.action;

    import java.util.Collection;

    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 page.bean.DatabaseConn;
    import page.bean.PageResultSet;
    import page.bean.ContactBO;
    import struts.form.LoginForm;

    /**
     * MyEclipse Struts
     * Creation date: 04-02-2008
     *
     * XDoclet definition:
     * @struts.action path="/login" name="loginForm" input="/login.jsp" scope="request" validate="true"
     * @struts.action-forward name="sss" path="/index.jsp"
     */
    public class LoginAction extends Action {
     /*
      * Generated Methods
      */

     /**
      * Method execute
      * @param mapping
      * @param form
      * @param request
      * @param response
      * @return ActionForward
      */
     public ActionForward execute(ActionMapping mapping, ActionForm form,
       HttpServletRequest request, HttpServletResponse response) {
      LoginForm loginForm = (LoginForm) form;

      ContactBO userBO=new ContactBO();
      //先从业务处理逻辑类中取出数据(ArrayList或Vector格式)
      Collection data;
      try {
       data = userBO.findContact(DatabaseConn.getConnection());
       //再得到当前页curPage和每页记录数pageSize
       //int curPage = Integer.parseInt((String)request.getParameter("cur_page"));
       int curPage = 1;
       String cur = request.getParameter("cur_page");
       System.out.println("--------------: "+cur);
       if(cur!=null && cur !=""){
        curPage = new Integer(cur).intValue();
       }
       int pageSize=10;
       //然后生成PageResultSet对象
       PageResultSet dataList = new PageResultSet(data, curPage, pageSize);
       request.setAttribute("usersList", dataList);
       return mapping.findForward("sss");
      } catch (Exception e) {
       e.printStackTrace();
       return mapping.getInputForward();
      }

     }
    }  3.以下是显示分页的页面

    <%@ page language="java" import="java.util.*,page.bean.Contact,page.bean.PageResultSet"
     pageEncoding="gb2312"%>
    <%
     String path = request.getContextPath();
     String basePath = request.getScheme() + "://"
       + request.getServerName() + ":" + request.getServerPort()
       + path + "/";
    %>

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
     <head>
      <base href="<%=basePath%>">

      <title>My JSP 'index.jsp' starting page</title>
      <meta http-equiv="pragma" content="no-cache">
      <meta http-equiv="cache-control" content="no-cache">
      <meta http-equiv="expires" content="0">
      <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
      <meta http-equiv="description" content="This is my page">
      <!--
     <link rel="stylesheet" type="text/css" href="styles.css">
     -->
     </head>

     <body>
     <table border="1">
      <%
       PageResultSet pageResultSet = (PageResultSet) request.getAttribute("usersList");
       ArrayList usersList = (ArrayList) pageResultSet.getData();
       for (int i = 0; i < usersList.size(); i++) {
        Contact co = (Contact) usersList.get(i);
      %>
      <tr>
       <td>
        <%=co.getId() %>
       </td>
       <td>
        <a href="login.do?id=<%=co.getId()%>"><%=co.getUsername()%></a>
       </td>
       <td>
        <%=co.getMobile() %>
       </td>
       <td>
        <%=co.getMail() %>
       </td>
       <td>
        <%=co.getPhone() %>
       </td>
       <td>
        <%=co.getMem() %>
       </td>
       <td>
        <%=co.getLastcontact() %>
       </td>
      </tr>
      <%
      }
      %>
      </table>
    <!-- 显示分页工具栏 -->

    <%=pageResultSet.getToolBar("login.do")%>
     </body>
    </html>

相关文章:

  • hibernate分页
  • select下拉列选提示选中内容(选中内容太长)
  • javamail发送邮件
  • struts实现的图片的上传和下载
  • JavaMail无法连接SMTP25端口问题
  • Project property XFire services.xml path does not refer to a valid file解决办法
  • 控制fckeditor文本长度
  • 有关hibernate配置
  • js代码总结
  • url中的jsessionid
  • 精妙SQL语句
  • Tomcat及MySQL服务配置
  • document.referrer 用法
  • ssh框架有关数据源的配置
  • java解析xml的四种方法
  • 9月CHINA-PUB-OPENDAY技术沙龙——IPHONE
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • js
  • Python利用正则抓取网页内容保存到本地
  • 当SetTimeout遇到了字符串
  • 第2章 网络文档
  • 第三十一到第三十三天:我是精明的小卖家(一)
  • 检测对象或数组
  • 聊聊flink的TableFactory
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 设计模式走一遍---观察者模式
  • 使用putty远程连接linux
  • 再谈express与koa的对比
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​​​​​​​​​​​​​​汽车网络信息安全分析方法论
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • #include
  • #includecmath
  • #NOIP 2014# day.1 T2 联合权值
  • #QT(TCP网络编程-服务端)
  • ()、[]、{}、(())、[[]]等各种括号的使用
  • (06)金属布线——为半导体注入生命的连接
  • (第二周)效能测试
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (五)c52学习之旅-静态数码管
  • (一)Dubbo快速入门、介绍、使用
  • (转)chrome浏览器收藏夹(书签)的导出与导入
  • .L0CK3D来袭:如何保护您的数据免受致命攻击
  • .NET Core6.0 MVC+layui+SqlSugar 简单增删改查
  • .net core控制台应用程序初识
  • .NET/ASP.NETMVC 深入剖析 Model元数据、HtmlHelper、自定义模板、模板的装饰者模式(二)...
  • .net6 webapi log4net完整配置使用流程
  • .netcore 6.0/7.0项目迁移至.netcore 8.0 注意事项
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • .vue文件怎么使用_vue调试工具vue-devtools的安装
  • [BUUCTF]-Reverse:reverse3解析
  • [BZOJ] 1001: [BeiJing2006]狼抓兔子
  • [git] windows系统安装git教程和配置