Edzy_Java

            BlogJava :: 首頁(yè) ::  ::  ::  :: 管理 ::
            58 隨筆 :: 12 文章 :: 11 評(píng)論 :: 0 Trackbacks

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

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

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

          3.在你的JSP頁(yè)面中:
          ?? <%
          ????????? 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>

          <!-- 顯示分頁(yè)工具欄 -->


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


          注意:
          1、如果你覺(jué)得分頁(yè)工具欄不能滿足你的要求,可以用PageResultSet類中的公共方法
          first()、previous()、next()、last()定制自己的工具欄,并且,你還可以在PageResultSet中定義多個(gè)樣式的工具欄;
          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:分頁(yè)類 </p>
          ?*
          ?* <p>Copyright: Copyright (c) 2004</p>
          ?*
          ?* <p>Company:youngor-studio(http://www.54youngor.com) </p>
          ?* @author:伍維波
          ?* @version 1.0
          ?*/
          public class PageResultSet {
          ??? /**
          ???? * 分頁(yè)數(shù)據(jù)
          ???? */
          ??? private Collection data = null;
          ??? /**
          ???? * 當(dāng)前頁(yè)
          ???? */
          ??? private int curPage;
          ??? /**
          ???? * 每頁(yè)顯示的記錄數(shù)
          ???? */
          ??? private int pageSize;
          ??? /**
          ???? * 記錄行數(shù)
          ???? */
          ??? private int rowsCount;
          ??? /**
          ???? * 頁(yè)數(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:返回當(dāng)前的頁(yè)數(shù)
          ???? *
          ???? * @return int
          ???? */
          ??? public int getCurPage() {
          ??????? return curPage;
          ??? }


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


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


          ??? /**
          ???? * getPageCount:返回總頁(yè)數(shù)
          ???? *
          ???? * @return int
          ???? */
          ??? public int getPageCount() {
          ??????? return pageCount;
          ??? }
          ??? /**
          ???? * 第一頁(yè)
          ???? * @return int
          ???? */
          ??? public int first() {
          ??????? return 1;
          ??? }
          ??? /**
          ???? * 最后一頁(yè)
          ???? * @return int
          ???? */
          ??? public int last() {
          ??????? return pageCount;
          ??? }
          ??? /**
          ???? * 上一頁(yè)
          ???? * @return int
          ???? */
          ??? public int previous() {
          ??????? return (curPage - 1 < 1) ? 1 : curPage - 1;
          ??? }
          ??? /**
          ???? * 下一頁(yè)
          ???? * @return int
          ???? */
          ??? public int next() {
          ??????? return (curPage + 1 > pageCount) ? pageCount : curPage + 1;
          ??? }


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


          ??? /**
          ???? * 第一頁(yè)
          ???? * @return boolean
          ???? */
          ??? public boolean isLast() {
          ??????? return (curPage==pageCount)?true:false;
          ??? }
          ??? /**
          ???? * 獲取當(dāng)前頁(yè)數(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+="首頁(yè) 上一頁(yè)&nbsp;";
          ??????? else
          ??????? {
          ??????????? str+="<a href='"+fileName+temp+"cur_page=1'>首頁(yè)</a>&nbsp;";
          ??????????? str+="<a href='"+fileName+temp+"cur_page="+(curPage-1)+"'>上一頁(yè)</a>&nbsp;";
          ??????? }
          ??????? if(isLast())
          ??????????? str+="下一頁(yè) 尾頁(yè)&nbsp;";
          ??????? else
          ??????? {
          ??????????? str+="<a href='"+fileName+temp+"cur_page="+(curPage+1)+"'>下一頁(yè)</a>&nbsp;";
          ??????????? str+="<a href='"+fileName+temp+"cur_page="+pageCount+"'>尾頁(yè)</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+"頁(yè)</option>";
          ??????????? else
          ??????????????? str+="<option value='"+i+"'>第"+i+"頁(yè)</option>";
          ??????? }
          ??????? str+="</select></p></form>";
          ??????? return str;
          ??? }
          }

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

          評(píng)論

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

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

          希望能盡快告訴我
            回復(fù)  更多評(píng)論
            

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

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

          主站蜘蛛池模板: 新泰市| 泰顺县| 嫩江县| 吴川市| 绥芬河市| 花莲县| 项城市| 滁州市| 炉霍县| 天峨县| 东辽县| 天祝| 四平市| 北流市| 古浪县| 嘉善县| 金川县| 湟源县| 鹿泉市| 铅山县| 奎屯市| 巩义市| 鄂尔多斯市| 华容县| 长治市| 铜鼓县| 鄱阳县| 邵阳县| 楚雄市| 台北县| 二连浩特市| 鸡西市| 仙居县| 上思县| 鄂伦春自治旗| 唐山市| 武冈市| 建德市| 庆城县| 行唐县| 玛多县|