|
#1
| ||||
| ||||
| [分享]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;
}
//------------------------------------------------------------------------------
}
代碼: <%@ 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製作進度嚴重拖垮.../_\ 已經跳票非常久了.. 在此只有在這邊先貼一下.. 目前到哪個糟糕的進度... 此文章於 2008-03-12 11:51 AM 被 vxr 編輯. |
| vxr 有會員給予您感謝: | ||
蓓兒 (2008-03-14) | ||