一个实用的东西——JSP分页

ZDNet软件频道 时间:2008-07-01 作者: | 中国IT实验室 我要评论()
本文关键词:分页 实用 JSP
有一个页面请求action,action调用分页实现类,然后到显示分页页面.
 有一个页面请求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>


 


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134