通用資料庫jsp分頁查詢模組

來源:互聯網
上載者:User

這個功能一共建立了兩個javabean組件和一個jsp頁面顯示分頁頁面,第一個是處理以資料庫連接的javabean,第一個javabean是處理分頁查詢結果的代碼,第三個jsp是調用第二個javabean,顯示分頁查詢結果!
//下面是串連mysql資料庫的一個javabean的代碼(可以更改下面的資料庫,不影響代碼的執行):

package data;
import java.sql.*;

public class LoginData{
    Connection conn=null;
    public LoginData(){
              this.connect();   
    }
  
    public Connection getConn(){
            return this.conn;
    }
    public boolean connect(){
           try{
          //使用JDBC橋建立資料庫連接
       Class.forName("org.gjt.mm.mysql.Driver").newInstance();
       
     //使用DriverManager類的getConnection()方法建立串連
     //第一個參數定義使用者名稱,第二個參數定義密碼
     this.conn=java.sql.DriverManager.getConnection("jdbc:mysql://localhost:3306/logindemo?useUnicode=true&characterEncoding=gb2312","root","123456");
      }catch(Exception ex){
           ex.printStackTrace();
     return false;
      }
      return true;
    }

//分頁查詢處理javabean

package split;
import java.sql.*;
import java.util.*;
import data.LoginData;
public class splitPage
{
       private Connection conn=null;
    private Statement stmt=null;
    private ResultSet rs=null;
    private ResultSetMetaData rsmd=null;
    //SQL 查詢語句
    private String sqlStr;
    //總紀錄數目
    public int rowCount;
    //所分得邏輯頁數
    public int pageCount;
    //每頁顯示的紀錄數目
    private int pageSize;
    //定義表的列數目
    private int columnCount;
    public void initialize(String sqlStr,int pageSize)
    {
            this.sqlStr=sqlStr;
      this.pageSize=pageSize;
      try
      {
          LoginData loginData=new data.LoginData();
          this.conn=loginData.getConn();
       this.stmt=this.conn.createStatement();
       this.rs=this.stmt.executeQuery(this.sqlStr);
       this.rsmd=this.rs.getMetaData();
       if(this.rs!=null)
       {
          this.rs.last();
       this.rowCount=this.rs.getRow();
       this.rs.first();
       this.columnCount=this.rsmd.getColumnCount();
       this.pageCount=(this.rowCount/this.pageSize==0)?(this.rowCount/this.pageSize):(this.rowCount/this.pageSize+1);
       }    
       }catch(Exception ex)
    {
              ex.printStackTrace();
        }
    }
    public Vector getPage(int ipage)
    {
           Vector vData=new Vector();
     int n=ipage;
     int m=0;
     m=(n-1)*this.pageSize+1;
     try
     {
         if(this.rs!=null)
      {
            if(n!=1)
      {
             this.rs.absolute(m);
         }
         for(int i=0;i<this.pageSize;i++)
      {    
             String[] sData=new String[this.columnCount];
          for(int j=0;j<this.columnCount;j++)
       {
               sData[j]=this.rs.getString(j+1);
          }
          if(sData==null)
       {
               break;
          }
          vData.addElement(sData);
          this.rs.next();
        }
        this.rs.close();
        this.stmt.close();
        this.conn.close();
       }
      }catch(Exception ex)
      {
          ex.printStackTrace();
      }
            return vData;
  }
      
     //獲得頁面總數
     public int getPageCount()
     {
             return this.pageCount;
     }
     //獲得資料表中總紀錄數
     public int getRowCount()
     {
             return this.rowCount;
     }
}

//jsp顯示分頁查詢頁面

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<%@ page import="java.io.*" %>
<%@ page import="java.util.*" %>
<%@ page import="data.*"%>
<jsp:useBean id="pages" scope="page" class="split.splitPage" />
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%!
      //顯示每頁的紀錄數
   int pageSize=10;
   String sqlStr="";
   //當前頁
   int showPage=1;
%>

<%
      sqlStr="select * from userinfo order by id ";
   String strPage=null;
   //獲得跳轉到的頁面
   pages.initialize(sqlStr,pageSize); 
   strPage=request.getParameter("showPage");   
   if(strPage==null){
      showPage=1;
   }else{
         try{
         showPage=Integer.parseInt(strPage);
   }catch(NumberFormatException ex){
          showPage=1;
   }
   if(showPage<1){
          showPage=1;
   }
   if(showPage>pages.getPageCount()){
           showPage=pages.getPageCount();
   }
   }
   //取得要顯示的資料集合
   Vector vData=pages.getPage(showPage);  
%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>分頁顯示</title>
</head>

<body bgcolor="#ffffff" text="#000000">
       <h1 align=center>個人基本資料</h1>
<div align=center>
    <table border="1" cellspacing="0" cellpadding="0" width="80%">
    <tr>
         <th width="20%">編號</th>
   <th width="40%">學號</th>
   <th width="40%">姓名</th>
    </tr>
    <%
          for(int i=0;i<vData.size();i++)
    {
          //顯示資料數
       String[] sData=(String[])vData.get(i);
    %>
                 <tr>
           <td><%=sData[0]%></td>
        <td><%=sData[1]%></td>
        <td><%=sData[2]%></td>
     </tr>
  <%
       }
  %>      
    </table>
    <p>
  <form action="word_list_javabean.jsp" method="get" target="_self">
      <p>共<font color=red><%=pages.getRowCount()%></font>條&nbsp;<%=pageSize%>條/頁&nbsp;&nbsp;第<font color=red><%=showPage%></font>頁/共<font color=red><%=pages.getPageCount()%></font>頁&nbsp;&nbsp;[<a href="word_list_javabean.jsp?showPage=1" target="_self">首頁</a>]&nbsp;
       <%
       //判斷“上一頁”連結是否要顯示
    if(showPage>1){
    %>
       [<a href="word_list_javabean.jsp?showPage=<%=showPage-1%>" target="_self">上一頁</a>]&nbsp;
    <%
       }
       else{   
    %>
            [上一頁]&nbsp;
  <%
         }
      //判斷“下一頁”連結是否顯示
      if(showPage<pages.getPageCount())
      {
  %>   
    [<a href="word_list_javabean.jsp?showPage=<%=showPage+1%>" target="_self">下一頁</a>]&nbsp;
    <%
       }
       else{   
    %>
            [下一頁]&nbsp;
  <%
     }
  %>   
 
    [<a href="word_list_javabean.jsp?showPage=<%=pages.getPageCount()%>" target="_self">尾頁</a>]&nbsp;轉到
        <select name="select">
  <%
       for(int x=1;x<=pages.getPageCount();x++)
    {
  %>
            <option value="<%=x%>"
      <%
          if(showPage==x){
           out.println("selected");
        }  
      %> ><%=x%></option>
  <%
       }
  %>   
        </select>
        頁&nbsp;&nbsp;&nbsp;
        <input type="submit" name="go" value="提交" />
    </p>
  </form>
    </p>
    </div>
</body>
</html>
 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.