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>
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章