Edzy_Java

            BlogJava :: 首頁 ::  ::  ::  :: 管理 ::
            58 隨筆 :: 12 文章 :: 11 評論 :: 0 Trackbacks
          <2006年11月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          常用鏈接

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          新聞檔案

          技術網站指南

          搜索

          最新評論

          評論排行榜

          這里我以從一個用戶表中查詢用戶信息為例演示其用法:

          1.將PageResultSet.java文件編譯成class文件,并放入你的Web
          應用程序的WEB-INF/classes/com/youngor/util目錄下,可以對包名做相應修改。

          2.在你的Action類中:
          先從業務處理邏輯類中取出數據(ArrayList或Vector格式)
          UserBO userBO=new UserBO();
          Collection data=userBO.findUsers();//示例方法
          再得到當前頁curPage和每頁記錄數pageSize
          int curPage = Integer.parseInt(request.getParameter(“cur_page“));
          int pageSize=15;
          然后生成PageResultSet對象
          PageResultSet dataList = new PageResultSet(data, curPage, pageSize);
          request.setAttribute("usersList", usersList);

          3.在你的JSP頁面中:
          ?? <%
          ????????? PageResultSet pageResultSet=(PageResultSet)request.getAttribute("usersList");
          ?? ArrayList usersList=(ArrayList)pageResultSet.getData();
          ?? for(int i=0;i<usersList.size();i++)
          ?? {
          ??????????? UserEO userEO=(UserEO)usersList.get(i);%>
          ????? <tr>
          ??????? <td><a href="view_user.do?id=<%=userEO.getId()%>"><%=userEO.getUsername()%></a></td>
          ??????? <td><%=userEO.getName()%></td>
          ??????? <td><%=userEO.getPhoneNumber()%></td>
          ??????? <td><%=userEO.getEmailBox()%></td>
          ??????? <td><%=userEO.getAddress()%></td>
          ??????? <td><%=userEO.getPostcode()%></td>
          ??????? </tr>
          ??? <%}%>
          ??? </table></td>
          ? </tr>
          </table>

          <!-- 顯示分頁工具欄 -->


          <%=pageResultSet.getToolBar("list_users.do")%>


          注意:
          1、如果你覺得分頁工具欄不能滿足你的要求,可以用PageResultSet類中的公共方法
          first()、previous()、next()、last()定制自己的工具欄,并且,你還可以在PageResultSet中定義多個樣式的工具欄;
          2、getToolBar(String url)方法接受帶查詢字符串的參數,比如“list_users.do?class_id=1“。



          //PageResultSet.java
          package com.youngor.util;


          import java.util.*;


          /**
          ?* <p>Title: PageResultSet</p>
          ?*
          ?* <p>Description:分頁類 </p>
          ?*
          ?* <p>Copyright: Copyright (c) 2004</p>
          ?*
          ?* <p>Company:youngor-studio(http://www.54youngor.com) </p>
          ?* @author:伍維波
          ?* @version 1.0
          ?*/
          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;
          ??? }
          }

          posted on 2006-11-15 21:15 lbfeng 閱讀(921) 評論(3)  編輯  收藏 所屬分類: JSP&Servlet技術

          評論

          # re: 用JAVA實現一個jsp分頁 2007-10-11 20:58 李賢
          UserBO userBO=new UserBO();

          UserBO 是什么類阿?
          能給出代碼么?

          希望能盡快告訴我
            回復  更多評論
            

          # re: 用JAVA實現一個jsp分頁 2007-12-18 09:13 禮必風
          顯然,UserBO是一個JavaBean撒!  回復  更多評論
            

          # re: 用JAVA實現一個jsp分頁 2007-12-22 16:41 游客
          你寫的這個分頁與OOP的思想結合不夠,
          建議:(1)寫一個javaBean:Page.java其中包含主要的三個基本屬性.
          其中包含:
          當前頁currentPageNo,最后頁lastPageNo,頁內容pageContent(集合)
          (2)寫一個接口:PageIf.java規定幾個其本頁操作方法.
          void Page getCurrentPage();
          void prevPage();
          void nextPage();
          void lastPage();
          void jumpToPage(int pageNo);
          (3)寫一個PageIf的實現類,可用spring進行配置.
          PageImpl.java包含以下屬性(要有set方法)
          private String tableName;
          private String className;
          private int pageSize;//頁大小
          private Page page=new Page();
          private Dao pageDao; //(通用dao)
          方法的實現(略)
          (4)寫一個頁控制器類,用servlet,struts,spring都可以,用以根據請求調用頁
          相應的操作方法.取得當前頁page并放在session中,返回視圖.
          (5)寫視圖頁,比如jsp,
          <a href="page.do?operate=nextPage">下一頁</a>
          共${page.lastPageNo}頁
            回復  更多評論
            

          主站蜘蛛池模板: 静海县| 房山区| 麦盖提县| 巴楚县| 馆陶县| 泗洪县| 嫩江县| 镶黄旗| 斗六市| 呼图壁县| 贺州市| 石城县| 晋宁县| 永清县| 县级市| 佛学| 仙桃市| 沙河市| 通河县| 怀化市| 吴堡县| 河北省| 卓资县| 朝阳县| 林口县| 于都县| 延津县| 南召县| 漳州市| 文成县| 根河市| 镇原县| 儋州市| 越西县| 湖北省| 克什克腾旗| 固始县| 镇宁| 汶上县| 彭阳县| 博罗县|