`
jzinfo
  • 浏览: 118405 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

在jsp中对mysql数据库分页的方法

阅读更多

针对分页,首先开发一个 PageBean 用来控制页面参数:

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;
	}
	    
}

 

 

okay,然后我们开发一个接口 SpiltPage,接口中共有两个方法。

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表的数据,将分页或所有数据:

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的页面,来分页显示数据:

<%@ 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">
  </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 products=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=#>修改</a>"+"</td>");
         out.println("<td align=\"center\">"+"<a 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="+i+">"+i+"</a>");
        %>    
      </td>
  </tr>
  </table>
  </body>
</html>

 

 

jsp中有很多java代码,可以考虑使用标签代替现实 呵呵。

 

分页的效果如下啦:

 

 

 

  • 大小: 52.7 KB
分享到:
评论

相关推荐

    JSP+JavaBean实现MySQL子查询数据库分页

    在Web开发中,数据库分页是一项常见的需求,它能够帮助我们有效地管理大量数据,提高页面加载速度,并提供更好的用户体验。本教程将详细讲解如何使用JSP(JavaServer Pages)配合JavaBean来实现MySQL数据库的子查询...

    jsp真分页mysql数据库

    **jsp真分页技术在MySQL数据库中的应用** 在Web开发中,当数据量较大时,一次性加载所有数据可能会导致页面加载速度慢,用户体验下降。此时,分页技术就显得尤为重要。"jsp真分页"是一种在JavaServer Pages (JSP) ...

    JSP+JDBC_真分页(基于MySQL数据库分页)

    在Java Web应用中,结合JSP(JavaServer Pages)和JDBC(Java Database Connectivity)可以轻松实现数据库分页功能。本篇文章将深入探讨如何在MySQL数据库上进行真分页的实现。 首先,理解什么是“真分页”。真分页...

    JSP+DAO和MVC+DAO(基于MySQL数据库分页)-v笔记

    在这个特定的笔记中,我们将探讨如何结合DAO(Data Access Object)模式以及MySQL数据库来实现分页功能。 **JSP+DAO分页** JSP+DAO模式是Web开发中常用的一种方式,其中JSP负责展示数据,而DAO负责与数据库交互。...

    jsp中数据库在页面分页的实现

    本主题将深入探讨如何在JSP中利用数据库实现页面分页,并涉及存储过程、Servlet以及Oracle和MySQL数据库的分页策略。 首先,我们要理解JSP(JavaServer Pages)是一种基于Java的动态网页技术,它可以嵌入Java代码来...

    用JSTL实现JSP分页显示数据代码(MySQL数据库)

    JSTL 实现 JSP 分页显示数据代码(MySQL 数据库) 本文将详细讲解如何使用 JSTL 实现 JSP 分页显示数据代码,并使用 MySQL 作为数据库。该代码不仅提供了分页显示数据的功能,还提供了数据库和表的创建代码。 标题...

    jsp +mysql+分页

    标题中的"jsp +mysql+分页"涉及到的是Web开发中的几个关键概念,主要集中在Java服务器页面(JSP)、MySQL数据库以及分页技术的应用。这里我们将深入探讨这些知识点。 首先,JSP(JavaServer Pages)是一种动态网页...

    Java+MyEclipse+Tomcat (三)配置MySQL及查询数据显示在JSP网页中_数据库_杨秀璋的专栏-CSDN博客

    本文将详细介绍如何在Java开发环境中,结合MyEclipse IDE和Tomcat服务器,配置MySQL数据库并实现查询结果显示在JSP网页中。这个过程对于任何Java Web开发者来说都是基本技能,能够帮助你构建动态的Web应用程序。 ##...

    JSP+DAO和MVC+DAO(基于MySQL数据库分页)

    本主题聚焦于Java Web开发中的分页技术,主要涉及两个方面:JSP(JavaServer Pages)结合DAO(Data Access Object)模式以及MVC(Model-View-Controller)框架下的DAO实现,两者均与MySQL数据库进行交互,实现数据的...

    Ajax Jsp 连接MySQL数据库

    在这个“Ajax Jsp 连接MySQL数据库”的主题中,我们将深入探讨如何在JSP页面上利用Ajax技术与后台MySQL数据库进行交互,同时处理多个Ajax请求。 首先,让我们了解基本概念。Ajax的核心是通过JavaScript向服务器发送...

    JSP连接SQL数据库实现数据分页显示

    在本示例中,首先需要建立JSP与SQL数据库之间的连接。这一步骤通过以下步骤完成: 1. **加载驱动**:使用`Class.forName()`方法加载JDBC-ODBC桥接驱动`sun.jdbc.odbc.JdbcOdbcDriver`。 ```java Class.forName(...

    jsp、servlet (mysql 数据库)购物网站

    【标题】"jsp、servlet (mysql 数据库)购物网站" 涉及的主要知识点包括JSP(JavaServer Pages)、Servlet、CSS以及MySQL数据库。这是一个基于Web的电子商务平台,提供了全面的购物体验,包括用户注册登录、购物车...

    jsp+mySql 真假分页

    【标题】"jsp+mySql 真假分页"涉及了Web开发中的两种常见分页技术:真分页和假分页。这两种方法在处理大量数据时特别有用,能够提高网页加载速度,优化用户体验。 **一、真分页** 真分页(Physical Pagination)是...

    java web利用数据库分页

    下面我们将详细探讨如何在Java Web应用中实现数据库分页,并结合JSP页面进行展示。 首先,我们需要理解分页的基本概念。分页通常涉及两个关键参数:当前页码(Page Number)和每页记录数(PageSize)。例如,如果...

    jsp 实现分页+mysql

    本教程将深入讲解如何使用JavaServer Pages(JSP)结合Servlet和MySQL数据库来实现分页功能。 首先,我们需要了解JSP的基本概念。JSP是一种基于Java的动态网页技术,它允许开发人员在HTML页面中嵌入Java代码,从而...

    jsp 分页技术 数据库MysqL

    本教程将聚焦于使用JavaServer Pages(JSP)结合MySQL数据库实现分页技术。 首先,我们需要理解JSP的基础。JSP是一种动态网页技术,它允许开发者在HTML页面中嵌入Java代码,以实现服务器端的逻辑处理。在JSP中,...

    Struts1.2实现MySQL数据库分页

    在Struts1.2中实现MySQL数据库分页,主要涉及以下几个关键知识点: 1. **Action类**:在Struts1.2中,业务逻辑通常由Action类处理。你需要创建一个Action类,该类负责接收用户的请求参数,如当前页数和每页显示的...

    JSP+MySql分页组件

    2. **编写SQL查询**:在服务器端,使用JDBC(Java Database Connectivity)连接到MySQL数据库,编写SQL查询语句。例如,获取第一页的10条数据: ```sql SELECT * FROM users LIMIT 10 OFFSET 0; ``` `LIMIT`指定...

    数据库分页大全及示例

    本篇文章将详细介绍如何在不同的数据库系统中实现分页,包括JAVA、JSP环境下的数据库分页实现,以及Oracle、SQL Server、MySQL、DB2等数据库的分页查询方法。 在Java和JSP中,分页通常涉及到后端服务器和前端页面的...

Global site tag (gtag.js) - Google Analytics