jsp如何進行查詢分頁

來源:互聯網
上載者:User

package com.longweir;     
    
//分頁後的javaBean     
    
import java.sql.*;     
import com.longweir.util.*;     
    
public class PageBean {     
    private int pageSize=5;  // 每頁顯示的記錄數5個     
    private int currentPage=1;    // 當前頁碼     
    private int pageCount=1;      // 總頁數     
    private int totalCount=0;     // 總記錄數      
    
    // 計算總頁數     
    public void setPageCount()     
    {     
        this.pageCount=(this.totalCount-1)/this.pageSize+1;     
    }     
         
    //擷取總頁數     
    public int getPagecount()     
    {     
        return this.pageCount;     
    }     
    
         
    //設定並修正當前頁碼,     
    public void setCurrentPage(int currentpage) {     
        //校正當前頁碼     
        if (currentPage>this.pageCount)     
            this.currentPage=this.pageCount;     
             
        else if (currentPage<1)     
            this.currentPage=1;     
        else      
            this.currentPage=currentpage;     
    }     
         
    //擷取當前頁碼     
    public int getCurrentPage() {     
        return this.currentPage;     
    }     
         
    //擷取全部記錄數     
    public int getTotalCount()     
    {     
        return this.totalCount;     
    }     
         
    //設定總共記錄數     
    public void setTotalCount(int totalcount)     
    {     
        this.totalCount =totalcount;     
             
        //設定總共記錄數後,同時需要校正計算總頁數     
        this.pageCount=(this.totalCount-1)/this.pageSize+1;     
    }        
    
    public int getPageSize() {     
        return pageSize;     
    }     
    
    public void setPageSize(int pageSize) {     
        this.pageSize = pageSize;     
             
        //設定每頁顯示的記錄個數後 同時需要校正計算後的總頁數     
         this.pageCount=(this.totalCount-1)/this.pageSize+1;     
    }     
             
}    

package com.longweir;     
    
//任何商務邏輯類只要實現了該介面 就可以進行資料的分頁顯示     
    
import java.util.*;     
import com.longweir.*;     
    
public interface SpiltPage {          
    //根據分頁對象中的參數 來分頁擷取資料     
    public Collection getPageData(PageBean pagebean) throws Exception;      
         
    //擷取所有的記錄個數     
    public int getAvailableCount() throws Exception;     
    
}  

這樣以來,主要的關於分頁的方法就完成了,我們開發一個針對資料庫表操作的商務邏輯類 ProductUtil,來實現上述介面

 下面這個類用來操作product表的資料,將分頁或所有資料:

Java代碼

[java] view plaincopy
package com.longweir;     
    
/*   
 * 此類包含所有的產品資訊的操作商務邏輯   
 * */     
    
import java.io.*;     
import java.sql.*;     
import java.util.*;     
import com.longweir.SpiltPage;     
import com.longweir.bean.ProductInfoVOBean;     
import com.longweir.util.DatabaseConnection;     
    
public class ProductUtil implements SpiltPage {     
    private Connection conn;     
         
    //重寫無參構造方法來擷取資料庫連接     
    public ProductUtil()     
    {     
        this.conn=DatabaseConnection.getConnection();  //擷取資料庫連接對象     
    }     
         
         
             //實現介面中的方法 來分頁擷取資料顯示     
    public Collection getPageData(PageBean pagebean) throws Exception     
    {     
        Statement stmt=null;     
        ResultSet rs=null;     
        Collection ret=new ArrayList();          
        if (conn.isClosed())  conn=DatabaseConnection.getConnection();     
        String sqlstr="select * from productInfo order by productid limit "+(pagebean.getCurrentPage()-1)*pagebean.getPageSize()+","+pagebean.getPageSize();     
        try     
        {     
            stmt=conn.createStatement();     
            rs=stmt.executeQuery(sqlstr);     
            while (rs.next())     
            {     
                    ProductInfoVOBean productInfo=new ProductInfoVOBean();     
                    productInfo.setCategoryid(rs.getString("catid"));     
                    productInfo.setProductname(rs.getString("productName"));     
                    productInfo.setProductid(rs.getString("productid"));     
                    productInfo.setPublishment(rs.getString("publishment"));     
                    productInfo.setPrice(rs.getFloat("price"));     
                    productInfo.setDescription(rs.getString("descn"));     
                    ret.add(productInfo);        
            }        
            stmt.close();     
            rs.close();     
            conn.close();     
        }     
        catch (Exception e)     
        {     
            e.printStackTrace();     
        }                
        return ret;     
    }     
         
    //實現介面方法 擷取記錄的總共個數     
         
    public int getAvailableCount()     
    {     
        Statement stmt=null;     
        ResultSet rs=null;     
        int counter=0;           
        try{     
            if (conn.isClosed()) conn=DatabaseConnection.getConnection();     
                 
            stmt=conn.createStatement();     
            rs=stmt.executeQuery("select count(*) from productInfo");     
            while (rs.next())     
            {     
                counter=rs.getInt(1);     
            }     
            stmt.close();     
            rs.close();     
            conn.close();     
        }     
        catch (Exception e){}     
        return counter;          
             
    }     
            

分頁的關鍵技術就是mysql中的這條分頁查詢語句:

"select * from productInfo order by productid limit "+(pagebean.getCurrentPage()-1)*pagebean.getPageSize()+","+pagebean.getPageSize();

 

開發一個viewProduct.jsp的頁面,來分頁顯示資料:
Html代碼

[xhtml] view plaincopy
<%@ page contentType="text/html;charset=GBK"%>     
<%@ page import="java.util.*" %>     
<%@ page import="java.io.*" %>     
<%@ page import="com.longweir.bean.*" %>     
    
<jsp:useBean id="product" class="com.longweir.ProductUtil" scope="session" />     
<jsp:useBean id="pagebean" class="com.longweir.PageBean" scope="session" />     
    
<html>     
  <head>     
    <title>查看所有的產品的資訊</title>         
    <link rel="stylesheet" type="text/css" href="css/style.css" mce_href="css/style.css">     
  </head>     
       
  <body>     
  <h3 align="center">查看所有的產品資訊</h3>      
  <table width="960" align="center" border="0" cellpadding="2" cellspacing="1" bgcolor="#999999">     
    <tr bgcolor="#EFEEED">     
        <td width="100">商品編號</td>     
        <td width="100">類別</td>     
        <td width="200">名稱</td>     
        <td width="100">出版商</td>     
        <td width="80">售價</td>     
        <td width="200">描述</td>      
        <td colspan="2" width="100" align="center">管理</td>           
    </tr>     
  <%      
    String temppage=request.getParameter("page");     
    int pno=1;     
         
    if (temppage!=null && !("").equals(temppage))     
    {     
        try     
        {     
           pno=Integer.parseInt(temppage);  //擷取提交的頁面編號     
        }     
        catch (Exception e)     
        {      
           pno=1;   //有異常 則直接跳轉到首條     
        }     
    }       
   //每次重新整理頁面時都應當重新獲得表中的記錄數,因為翻頁過程中表的記錄可能隨時都會更新      
     pagebean.setTotalCount(product.getAvailableCount());          
     pagebean.setCurrentPage(pno);     
  %>     
         
  <%      
     Collection productproducts=product.getPageData(pagebean);  //分頁顯示     
     Iterator it=products.iterator();     
     while (it.hasNext())     
     {     
         ProductInfoVOBean temp=(ProductInfoVOBean)it.next();     
         out.println("<tr  bgcolor=/"#FFFFFF/">");     
         out.println("<td>"+temp.getProductid()+"</td>");     
         out.println("<td>"+temp.getCategoryid()+"</td>");     
         out.println("<td>"+temp.getProductname()+"</td>");     
         out.println("<td>"+temp.getPublishment()+"</td>");     
         out.println("<td>"+temp.getPrice()+"</td>");     
         out.println("<td>"+temp.getDescription()+"</td>");     
         out.println("<td algin=/"center/">"+"<a href="#" mce_href="#">修改</a>"+"</td>");     
         out.println("<td align=/"center/">"+"<a href="/" mce_href="/""/product/servlet/DeleteProductServlet?productid="+temp.getProductid()+"/">刪除</a</td>");     
         out.println("</tr>");              
     }      
  %>     
  </table>     
       
  <table width="960" align="center" border="0" cellpadding="1" cellspacing="2">     
    <tr>     
        <td></td>     
    <tr>     
    <tr>     
      <td align="right">     
        共<%=pagebean.getPagecount()%>頁     
        <%     
           for (int i=1;i<=pagebean.getPagecount();i++)     
               out.println("<a href="/product/viewProduct.jsp?page=" mce_href="product/viewProduct.jsp?page=""+i+">"+i+"</a>");     
        %>         
      </td>     
  </tr>     
  </table>     
  </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.