返回   ShareGet 社群討論 > ≡ 電腦網路 ≡ > □ -- 程式設計討論

發表新主題 回覆
 
主題工具 顯示模式
  #1  
舊 2008-03-12, 11:38 AM
vxr 的頭像
vxr vxr 目前是離線
星の魂
 
註冊日期: 2005-02-08
文章: 723
給予: 0 | 感謝 6 | 共 4 篇
積分: 4588 | 給分能力: 27
[分享]JSP實現分頁控制..

沒啥特別的..
最近在寫的這個很無聊的東西(廢話!!工作要用..!!)..
我用JavaBean去裝頁碼控制的部分..
當然因為要從DataBase去讀出資料來..
所以還有一個JavaBean(這部分不需要看了..單純看頁碼的作法.!..)..
所以就是兩個拉..
頁碼的部分..
這邊只表示First,Previous,Next,Last的表示..
當然要顯示號碼也是不難..
稍微改一下就行了!

以下是一個簡單的範例:
JavaBean:PageControl.Java
代碼:
package bean;
//頁碼控制類別(第一頁,上一頁,下一頁,最後一頁)
/*
 * pageName:頁面名稱
 * currentRow;目前第幾筆資料列號
 * totalRows:全部資料總數
 * loadedPage:欲載入的上一個或下一個頁面
 * totalPage:全部頁數
 * pageCode:頁碼
 * xxxxPageButtonName;頁碼按鈕
 * dbRs:ResultSet物件
 */


import java.sql.*;

public class PageControl {
private static ResultSet dbRs;
private static int totalRows;
private static int currentRow;
private static int totalPage;
private static String loadedPage;

    public void setTotalRows(ResultSet dbRs)throws SQLException{
        dbRs.last();
        this.totalRows=dbRs.getRow();
    }
    public int getTotalRows(){
        return this.totalRows;
    }
    
    public void setCurrentRow(int pageCode,int pageSize)throws SQLException{
        this.currentRow=(pageCode*pageSize)+1;
    }
    public int getCurrentRow(){
        return this.currentRow;
    }
    
    public void setTotalPage(int totalRows,int pageSize){
        if(totalRows%pageSize==0)
            this.totalPage=(totalRows/pageSize);
        else this.totalPage=(totalRows/pageSize)+1;
    }
    public int getTotalPage(){
        return this.totalPage;
    }
//------------------------------------------------------------------------------
    public String getFirstPage(int pageCode,String pageName,String firstPageButtonName){
        if(pageCode>0)
            this.loadedPage="<a href='"+pageName+"'>"+firstPageButtonName+"</a>";
        else this.loadedPage=firstPageButtonName;
        return this.loadedPage;
    }
    
    public String getPrevPage(int pageCode,int totalPage,String pageName,String prevPageButtonName){
        if(pageCode>0){
            this.loadedPage="<a href='"+pageName+"?pageCode="+
                    String.valueOf(pageCode-1)+"'>"+prevPageButtonName+"</a>";}
        else this.loadedPage=prevPageButtonName;
        return this.loadedPage;
    }
    
    public String getNextPage(int pageCode,int totalPage,String pageName,String nextPageButtonName){
        if(pageCode<(totalPage-1)){
            this.loadedPage="<a href='"+pageName+"?pageCode="+
                    String.valueOf(pageCode+1)+"'>"+nextPageButtonName+"</a>";
        }else this.loadedPage=nextPageButtonName;
        return this.loadedPage;
    }
    
    public String getLastPage(int pageCode,int totalPage,String pageName,String lastPageButtonName){
         if(pageCode<(totalPage-1)){
             this.loadedPage="<a href='"+pageName+"?pageCode="+
                    String.valueOf(totalPage-1)+"'>"+lastPageButtonName+"</a>";
         }else this.loadedPage=lastPageButtonName;
         return this.loadedPage;     
    }
//------------------------------------------------------------------------------
}
Main Page:Main.jsp
代碼:
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%
request.setCharacterEncoding("UTF-8");
%>
<jsp:useBean id="beanPageControl" class="bean.PageControl" scope="page"/>
<jsp:useBean id="beanDBOracle" class="bean.DBOracle" scope="page" />
<%
	Connection dbConn;
	beanDBOracle.setConnection();
	dbConn=beanDBOracle.getConnection();
	Statement dbStmt;
	beanDBOracle.setStatement(dbConn,ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
	dbStmt=beanDBOracle.getStatement();
	String sql;
	sql="SELECT * FROM TABLE_NAME";
	beanDBOracle.setResultSet(dbStmt,sql);
	ResultSet dbRs;
	dbRs=beanDBOracle.getResultSet();
	boolean existedValue=dbRs.next();
	int pageSize=35;
	int pageCode;
	int totalRows;
	int currentRow;
	int totalPage;
	if(request.getParameter("pageCode")==null){
		pageCode=0;
	}else {
		pageCode=Integer.parseInt(request.getParameter("pageCode"));
	}
	
	beanPageControl.setTotalRows(dbRs);
	totalRows=beanPageControl.getTotalRows();
	
	beanPageControl.setTotalPage(totalRows,pageSize);
	totalPage=beanPageControl.getTotalPage();
	
	beanPageControl.setCurrentRow(pageCode,pageSize);
	currentRow=beanPageControl.getCurrentRow();
	
	dbRs.absolute(currentRow);
	
	String firstPage,prevPage,nextPage,lastPage;
	String pageName="list_announ_info.jsp";
		firstPage=beanPageControl.getFirstPage(pageCode,pageName,"第一頁");
		prevPage=beanPageControl.getPrevPage(pageCode,totalPage,pageName,"上一頁");
		nextPage=beanPageControl.getNextPage(pageCode,totalPage,pageName,"下一頁");
		lastPage=beanPageControl.getLastPage(pageCode,totalPage,pageName,"最後頁");
	
	
	
%>
<!--以下部份省略-->
<% //Start For
for(int initV=1;initV<=pageSize&&dbRs.getRow()!=totalRows;initV++){
%>
<!--用Loop去跑出你要讀出的DataBase內容-->
<%} //End For %>
<!--再把firstPage,prevPage,nextPage,lastPage從這印出來-->
<%
dbRs.close();
dbStmt.close();
dbConn.close();
%>
<!--以下全省略-->
大概差不多就這樣..
覺得有問題的人可以說一下..
有些人會用夾擠的做法去做..
不過我不是很喜歡..

題外話:
因為今年實在很忙..
Kmplayer的3.0版的Icon製作進度嚴重拖垮.../_\
已經跳票非常久了..
在此只有在這邊先貼一下..
目前到哪個糟糕的進度...
上傳的圖像
檔案類型: jpg demo.jpg (186.4 KB, 34 次瀏覽)
__________________
~果てしなき大海原~


此文章於 2008-03-12 11:51 AM 被 vxr 編輯.
回覆時引用此文章
vxr 有會員給予您感謝:
蓓兒 (2008-03-14)
  #2  
舊 2008-03-14, 04:39 AM
蓓兒 的頭像
軟硬體區版主
 
註冊日期: 2004-06-05
來自: 沒有小白的地方
文章: 3,498
給予: 74 | 感謝 28 | 共 8 篇
積分: 14903 | 給分能力: 59
雖然在下不闇程式撰寫,不過難得Vrx大顯身手,當然要好好推一下囉
__________________
>>>>>>>>>>>>>>>>>>>>>>
適當的回覆是一種美德
但充滿廢話的回覆可就變成垃圾了
要有美德還是變成垃圾就全看自己的誠意囉!
如何發問才能得到高手的青睞,而得到解答呢?請看此篇-------> 提問的智慧
回覆時引用此文章
發表新主題 回覆

書簽

主題工具
顯示模式

發文規則
不可以發表新主題
不可以發表回覆
不可以上傳附件
不可以編輯自己的文章

啟用 BB 代碼
論壇啟用 表情符號
論壇啟用 [IMG] 代碼
論壇禁用 HTML 代碼
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用
論壇跳轉


所有時間均為GMT -5。現在的時間是 12:21 PM


Powered by vBulletin® Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.