java查詢分頁技術(1)

以下是java類
/*
 * PageNumber.java
 *
 * Created on 2006年10月9日, 上午8:21
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */
package page;
import java.io.*;
import java.sql.*;
import java.lang.String;
/**
 *只需傳進三個參數,一個是每頁顯示記錄集數,一個是記錄集,一個是URL
 *取得分頁效果只需調用一個getPage即可
 * @mc1035
 */
public class PageNumber {
    private int rowCount=1,   //總的記錄數。
            pageSize=1,  //每頁顯示的記錄數。
            showPage=1,  //設置欲顯示的頁碼數。
            pageCount=1; //分頁之後的總頁數。
    private ResultSet rs;
    private String url;
    private StringBuffer page=new StringBuffer();
    private String formValue="-1";
   
    /*
     *設置記錄集
     */
    public void setRs(ResultSet a){
        rs=a;
        try {
            rs.last(); //獲取最後一行的行號:
            rowCount=rs.getRow();//獲取
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
       
    }
    public ResultSet getRs(){
        return rs;
    }
    /*
     *設置url
     */
    public void setUrl(String a){
        url=a;
    }
    public String getUrl(){
        return url;
    }
    /*
     *設置總記錄數
     */
    public void setRowCount(int n) {
        rowCount=n;
    }
    public int getRowCount() {
        return rowCount;
    }
   
    /*
     *設置總的頁數
     */
    public void setPageCount() {
       
        int n=(rowCount%pageSize)==0?(rowCount/pageSize):(rowCount/pageSize+1) ;
        pageCount=n;
    }
    public int getPageCount() {
        return pageCount;
    }
    /*
     *設置顯示第幾頁
     */
    public void setShowPage(int n) {
        showPage=n;
    }
    public int getShowPage() {
        return showPage;
    }
    /*
     *每頁顯示的記錄數
     */
    public void setPageSize(int n) {
        pageSize=n;
       
    }
    public int getPageSize() {
        return pageSize;
    }
    /*
     *設置表單值
     */
    public void setFormValue(String a){
        formValue=a;
    }
    public String getFormValue(){
        return formValue;
    }
    public void setForm(){
       
        page.append("共有"+getRowCount()+"條記錄 ");
        page.append("  "+getPageCount()+"頁 ");
        page.append(" 當前爲第"+getShowPage()+"頁 ");
        page.append("每頁顯示"+getPageSize()+"條記錄");
       
        if(getShowPage()!=1){
            page.append("<Form action=/""+url+"/" method=/"post/">");
            page.append("<Input Type=/"hidden/" name=/"formValue/" value=/"1/">");
            page.append("<Input name=/"submit4/" type=/"submit/" value=/"首頁/">");
            page.append("</FORM>");
        }else{
            page.append("&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp");
        }
        if(getShowPage()!=getPageCount()){
            page.append("<Form action=/""+url+"/" method=/"post/">");
            page.append("<Input Type=/"hidden/" name=/"formValue/" value=/""+(getShowPage()+1)+"/">");
           page.append("<Input name=/"submit4/" type=/"submit/" value=/"下一頁/">");
            page.append("</FORM>");
        }else{
        page.append("&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp");
        }
        if(getShowPage()!=1){
            page.append("<Form action=/""+url+"/" method=/"post/">");
            page.append("<Input Type=/"hidden/" name=/"formValue/" value=/""+(getShowPage()-1)+"/">");
          
           page.append("<Input name=/"submit4/" type=/"submit/" value=/"上一頁/">");
            page.append("</FORM>");
        }else{
            page.append("&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp");
        }
        if(getShowPage()!=getPageCount()){
            page.append("<Form action=/""+url+"/" method=/"post/">");
            page.append("<Input Type=/"hidden/" name=/"formValue/" value=/""+getPageCount()+"/">");
           
           page.append("<Input name=/"submit4/" type=/"submit/" value=/"末頁/">");
            page.append("</FORM>");
        }else{
            page.append("&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp");
        }
       
        page.append("<Form action=/""+url+"/" method=/"post/">");
        page.append("輸入欲要顯示的頁<Input Type=/"text/" name=/"formValue/" size=/"5/" value=/""+getShowPage()+"/">");
      
        page.append("<Input name=/"submit4/" type=/"submit/" value=/"GO/">");
        page.append("</FORM>");
       
       
    }
    public void showList(){
        try{
            page.append("<Table>");
            page.append("<TR>");
            ResultSetMetaData statName= rs.getMetaData();
           
            for(int i=1;i<=statName.getColumnCount();i++){
                page.append("<TH>"+statName.getColumnName(i));
            }
            page.append("</TR>");
           
            for(int i=1;i<=getPageSize();i++) {
                page.append("<TR>");
                for(int j=1;j<=statName.getColumnCount();j++){
                    page.append("<TD>"+rs.getString(j)+"</TD>");
                }
                page.append("</TR>") ;
                if(!rs.next()){
                    break;
                }
            }
            page.append("</Table>");
            setForm();
           
        }catch(Exception e){
            e.printStackTrace();
            page.append(e);
        }
    }
    public String getPage(){
        setPageCount();
        try{
            int n=1;
            if(formValue.equals("-1")){
                formValue="1";
                setShowPage(1);
                rs.absolute((n-1)*getPageSize()+1);
               
            }else {
                try{
                    n=Integer.parseInt(formValue);
                    if(n>getPageCount()) {
                        n=getPageCount();
                    }
                    if(n<=0) {
                        n=1;
                    }
                    setShowPage(n);
                    rs.absolute((n-1)*getPageSize()+1);
                   
                } catch(NumberFormatException e){
                    e.printStackTrace();
                    n=getShowPage();
                    rs.absolute((n-1)*getPageSize()+1);
                }
            }
        } catch(SQLException ex){
            ex.printStackTrace();
        }
        showList();
       
       
        String a=new String(page);
        return a;
    }
   
   
}
 
以下是調用代碼
<%@page contentType="text/html" pageEncoding="gb2312" import="java.sql.*,java.io.*"%>
<%@page import="page.PageNumber"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <jsp:useBean id="pageNum" scope="page" class="page.PageNumber" />
   
        <%!
            Connection con=null;
            Statement sql=null;
            ResultSet rs=null;
            int rowCount=0;
            int pageSize=5;//每頁顯示的記錄集數
        %>
        <%      try{
                Class.forName("org.gjt.mm.mysql.Driver");
                con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","zjj","zjj");
                sql=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
                rs=sql.executeQuery("select * from news");
        %>
        <% //URL
            String str=response.encodeRedirectURL("index.jsp");
        //下面的是Bean的參數,可根據需要自行修改
        %> 
     
        <jsp:setProperty name="pageNum" property="formValue" param="formValue"/>     
        <jsp:setProperty name="pageNum" property="rs" value="<%=rs%>"/>
        <jsp:setProperty name="pageNum" property="pageSize" value="<%=pageSize%>"/>
        <jsp:setProperty name="pageNum" property="url" value="<%=str%>"/>       
        <jsp:getProperty name="pageNum" property="page"/>
      
        <%
            rs.close();
            con.close();
            }catch(SQLException e){
                e.printStackTrace();
                out.print(e);
                rs.close();
                con.close();
            }
        %>
   
    </body>
</html>
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章