Edzy_Java

            BlogJava :: 首頁 ::  ::  ::  :: 管理 ::
            58 隨筆 :: 12 文章 :: 11 評論 :: 0 Trackbacks

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

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

          2.在你的Action類中:
          先從業(yè)務處理邏輯類中取出數(shù)據(jù)(ArrayList或Vector格式)
          UserBO userBO=new UserBO();
          Collection data=userBO.findUsers();//示例方法
          再得到當前頁curPage和每頁記錄數(shù)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)方法接受帶查詢字符串的參數(shù),比如“l(fā)ist_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 {
          ??? /**
          ???? * 分頁數(shù)據(jù)
          ???? */
          ??? private Collection data = null;
          ??? /**
          ???? * 當前頁
          ???? */
          ??? private int curPage;
          ??? /**
          ???? * 每頁顯示的記錄數(shù)
          ???? */
          ??? private int pageSize;
          ??? /**
          ???? * 記錄行數(shù)
          ???? */
          ??? private int rowsCount;
          ??? /**
          ???? * 頁數(shù)
          ???? */
          ??? 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:返回當前的頁數(shù)
          ???? *
          ???? * @return int
          ???? */
          ??? public int getCurPage() {
          ??????? return curPage;
          ??? }


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


          ??? /**
          ???? * getRowsCount:返回總記錄行數(shù)
          ???? *
          ???? * @return int
          ???? */
          ??? public int getRowsCount() {
          ??????? return rowsCount;
          ??? }


          ??? /**
          ???? * getPageCount:返回總頁數(shù)
          ???? *
          ???? * @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;
          ??? }
          ??? /**
          ???? * 獲取當前頁數(shù)據(jù)
          ???? * @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;轉(zhuǎn)到<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 閱讀(918) 評論(3)  編輯  收藏 所屬分類: JSP&Servlet技術(shù)

          評論

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

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

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

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

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

          主站蜘蛛池模板: 廉江市| 襄汾县| 历史| 泰安市| 斗六市| 绥中县| 开鲁县| 孙吴县| 启东市| 澜沧| 江永县| 钟山县| 扬中市| 南宫市| 霍城县| 荣昌县| 阳新县| 三江| 那坡县| 通州区| 沐川县| 宁安市| 鹿邑县| 景谷| 肇州县| 柘荣县| 黎平县| 仲巴县| 奈曼旗| 磐安县| 隆安县| 惠州市| 昭通市| 鲁甸县| 白河县| 黑水县| 金乡县| 潍坊市| 土默特右旗| 福鼎市| 鸡泽县|