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

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

Java代码  收藏代码
  1. package com.longweir;  
  2.   
  3. //分页后的javaBean  
  4.   
  5. import java.sql.*;  
  6. import com.longweir.util.*;  
  7.   
  8. public class PageBean {  
  9.     private int pageSize=5;  // 每页显示的记录数5个  
  10.     private int currentPage=1;    // 当前页码  
  11.     private int pageCount=1;      // 总页数  
  12.     private int totalCount=0;     // 总记录数   
  13.   
  14.     // 计算总页数  
  15.     public void setPageCount()  
  16.     {  
  17.         this.pageCount=(this.totalCount-1)/this.pageSize+1;  
  18.     }  
  19.       
  20.     //获取总页数  
  21.     public int getPagecount()  
  22.     {  
  23.         return this.pageCount;  
  24.     }  
  25.   
  26.       
  27.     //设置并修正当前页码,  
  28.     public void setCurrentPage(int currentpage) {  
  29.         //校验当前页码  
  30.         if (currentPage>this.pageCount)  
  31.             this.currentPage=this.pageCount;  
  32.           
  33.         else if (currentPage<1)  
  34.             this.currentPage=1;  
  35.         else   
  36.             this.currentPage=currentpage;  
  37.     }  
  38.       
  39.     //获取当前页码  
  40.     public int getCurrentPage() {  
  41.         return this.currentPage;  
  42.     }  
  43.       
  44.     //获取全部记录数  
  45.     public int getTotalCount()  
  46.     {  
  47.         return this.totalCount;  
  48.     }  
  49.       
  50.     //设置总共记录数  
  51.     public void setTotalCount(int totalcount)  
  52.     {  
  53.         this.totalCount =totalcount;  
  54.           
  55.         //设置总共记录数后,同时需要校正计算总页数  
  56.         this.pageCount=(this.totalCount-1)/this.pageSize+1;  
  57.     }     
  58.   
  59.     public int getPageSize() {  
  60.         return pageSize;  
  61.     }  
  62.   
  63.     public void setPageSize(int pageSize) {  
  64.         this.pageSize = pageSize;  
  65.           
  66.         //设置每页显示的记录个数后 同时需要校正计算后的总页数  
  67.          this.pageCount=(this.totalCount-1)/this.pageSize+1;  
  68.     }  
  69.           
  70. }  

 

 

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

Java代码  收藏代码
  1. package com.longweir;  
  2.   
  3. //任何业务逻辑类只要实现了该接口 就可以进行数据的分页显示  
  4.   
  5. import java.util.*;  
  6. import com.longweir.*;  
  7.   
  8. public interface SpiltPage {       
  9.     //根据分页对象中的参数 来分页获取数据  
  10.     public Collection getPageData(PageBean pagebean) throws Exception;   
  11.       
  12.     //获取所有的记录个数  
  13.     public int getAvailableCount() throws Exception;  
  14.   
  15. }  

 

 

这样以来,主要的关于分页的方法就完成了,我们开发一个针对数据库表操作的业务逻辑类 ProductUtil,来实现上述接口

 下面这个类用来操作product表的数据,将分页或所有数据:

Java代码  收藏代码
  1. package com.longweir;  
  2.   
  3. /* 
  4.  * 此类包含所有的产品信息的操作业务逻辑 
  5.  * */  
  6.   
  7. import java.io.*;  
  8. import java.sql.*;  
  9. import java.util.*;  
  10. import com.longweir.SpiltPage;  
  11. import com.longweir.bean.ProductInfoVOBean;  
  12. import com.longweir.util.DatabaseConnection;  
  13.   
  14. public class ProductUtil implements SpiltPage {  
  15.     private Connection conn;  
  16.       
  17.     //重写无参构造方法来获取数据库连接  
  18.     public ProductUtil()  
  19.     {  
  20.         this.conn=DatabaseConnection.getConnection();  //获取数据库连接对象  
  21.     }  
  22.       
  23.       
  24.              //实现接口中的方法 来分页获取数据显示  
  25.     public Collection getPageData(PageBean pagebean) throws Exception  
  26.     {  
  27.         Statement stmt=null;  
  28.         ResultSet rs=null;  
  29.         Collection ret=new ArrayList();       
  30.         if (conn.isClosed())  conn=DatabaseConnection.getConnection();  
  31.         String sqlstr="select * from productInfo order by productid limit "+(pagebean.getCurrentPage()-1)*pagebean.getPageSize()+","+pagebean.getPageSize();  
  32.         try  
  33.         {  
  34.             stmt=conn.createStatement();  
  35.             rs=stmt.executeQuery(sqlstr);  
  36.             while (rs.next())  
  37.             {  
  38.                     ProductInfoVOBean productInfo=new ProductInfoVOBean();  
  39.                     productInfo.setCategoryid(rs.getString("catid"));  
  40.                     productInfo.setProductname(rs.getString("productName"));  
  41.                     productInfo.setProductid(rs.getString("productid"));  
  42.                     productInfo.setPublishment(rs.getString("publishment"));  
  43.                     productInfo.setPrice(rs.getFloat("price"));  
  44.                     productInfo.setDescription(rs.getString("descn"));  
  45.                     ret.add(productInfo);     
  46.             }     
  47.             stmt.close();  
  48.             rs.close();  
  49.             conn.close();  
  50.         }  
  51.         catch (Exception e)  
  52.         {  
  53.             e.printStackTrace();  
  54.         }             
  55.         return ret;  
  56.     }  
  57.       
  58.     //实现接口方法 获取记录的总共个数  
  59.       
  60.     public int getAvailableCount()  
  61.     {  
  62.         Statement stmt=null;  
  63.         ResultSet rs=null;  
  64.         int counter=0;        
  65.         try{  
  66.             if (conn.isClosed()) conn=DatabaseConnection.getConnection();  
  67.               
  68.             stmt=conn.createStatement();  
  69.             rs=stmt.executeQuery("select count(*) from productInfo");  
  70.             while (rs.next())  
  71.             {  
  72.                 counter=rs.getInt(1);  
  73.             }  
  74.             stmt.close();  
  75.             rs.close();  
  76.             conn.close();  
  77.         }  
  78.         catch (Exception e){}  
  79.         return counter;       
  80.           
  81.     }  
  82.           

 

分页的关键技术就是mysql中的这条分页查询语句:

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

 

开发一个viewProduct.jsp的页面,来分页显示数据:

Html代码  收藏代码
  1. <%@ page contentType="text/html;charset=GBK"%>  
  2. <%@ page import="java.util.*" %>  
  3. <%@ page import="java.io.*" %>  
  4. <%@ page import="com.longweir.bean.*" %>  
  5.   
  6. <jsp:useBean id="product" class="com.longweir.ProductUtil" scope="session" />  
  7. <jsp:useBean id="pagebean" class="com.longweir.PageBean" scope="session" />  
  8.   
  9. <html>  
  10.   <head>  
  11.     <title>查看所有的产品的信息</title>      
  12.     <link rel="stylesheet" type="text/css" href="css/style.css">  
  13.   </head>  
  14.     
  15.   <body>  
  16.   <h3 align="center">查看所有的产品信息</h3>   
  17.   <table width="960" align="center" border="0" cellpadding="2" cellspacing="1" bgcolor="#999999">  
  18.     <tr bgcolor="#EFEEED">  
  19.         <td width="100">商品编号</td>  
  20.         <td width="100">类别</td>  
  21.         <td width="200">名称</td>  
  22.         <td width="100">出版商</td>  
  23.         <td width="80">售价</td>  
  24.         <td width="200">描述</td>   
  25.         <td colspan="2" width="100" align="center">管理</td>        
  26.     </tr>  
  27.   <%   
  28.     String temppage=request.getParameter("page");  
  29.     int pno=1;  
  30.       
  31.     if (temppage!=null && !("").equals(temppage))  
  32.     {  
  33.         try  
  34.         {  
  35.            pno=Integer.parseInt(temppage);  //获取提交的页面编号  
  36.         }  
  37.         catch (Exception e)  
  38.         {   
  39.            pno=1;   //有异常 则直接跳转到首条  
  40.         }  
  41.     }    
  42.    //每次刷新页面时都应当重新获得表中的记录数,因为翻页过程中表的记录可能随时都会更新   
  43.      pagebean.setTotalCount(product.getAvailableCount());       
  44.      pagebean.setCurrentPage(pno);  
  45.   %>  
  46.       
  47.   <%   
  48.      Collection productproducts=product.getPageData(pagebean);  //分页显示  
  49.      Iterator it=products.iterator();  
  50.      while (it.hasNext())  
  51.      {  
  52.          ProductInfoVOBean temp=(ProductInfoVOBean)it.next();  
  53.          out.println("<tr  bgcolor=\"#FFFFFF\">");  
  54.          out.println("<td>"+temp.getProductid()+"</td>");  
  55.          out.println("<td>"+temp.getCategoryid()+"</td>");  
  56.          out.println("<td>"+temp.getProductname()+"</td>");  
  57.          out.println("<td>"+temp.getPublishment()+"</td>");  
  58.          out.println("<td>"+temp.getPrice()+"</td>");  
  59.          out.println("<td>"+temp.getDescription()+"</td>");  
  60.          out.println("<td algin=\"center\">"+"<a href=#>修改</a>"+"</td>");  
  61.          out.println("<td align=\"center\">"+"<a href=\"/product/servlet/DeleteProductServlet?productid="+temp.getProductid()+"\">删除</a</td>");  
  62.          out.println("</tr>");           
  63.      }   
  64.   %>  
  65.   </table>  
  66.     
  67.   <table width="960" align="center" border="0" cellpadding="1" cellspacing="2">  
  68.     <tr>  
  69.         <td></td>  
  70.     <tr>  
  71.     <tr>  
  72.       <td align="right">  
  73.         共<%=pagebean.getPagecount()%>页  
  74.         <%  
  75.            for (int i=1;i<=pagebean.getPagecount();i++)  
  76.                out.println("<a href=/product/viewProduct.jsp?page="+i+">"+i+"</a>");  
  77.         %>      
  78.       </td>  
  79.   </tr>  
  80.   </table>  
  81.   </body>  
  82. </html>  

 

 

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

 

分页的效果如下啦:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/553841.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谷歌浏览器提示您的连接不是私密连接怎么办

谷歌浏览器是现在很多用户都在使用的上网流量应用&#xff0c;但是㜾有用户反应在互联网手机扫码继续观看很多小伙伴都在使用谷歌浏览器的时候提示了您的连接不是私密连接&#xff0c;那么该怎么办呢?今天就为你们带来了谷歌浏览器提示您的连接不是私密连接解决方法&#xff0…

centos的glibc升级方案 'GLIBCXX_3.4.15' not found错误的解决

升级Centos系统之后&#xff0c;运行filezilla时&#xff0c;出现如下错误的提示信息&#xff1a; /usr/lib/libstdc.so.6: version GLIBCXX_3.4.15 not found (required by ...) 如果是64位系统报错信息如下&#xff1a; /usr/lib64/libstdc.so.6: version GLIBCXX_3.4.15 not…

windows7怎么清空电脑只剩系统

windows7怎么清空电脑只剩系统?在用户使用电脑的过程中&#xff0c;日积月累总会产很多的垃圾&#xff0c;导致我们电脑的运行速度变得缓慢&#xff0c;这时候我们就需要对电脑进行一定的清理&#xff0c;让电脑能够恢复到最佳的状态&#xff0c;小编今天就来教大家win7清空只…

win7系统显卡在哪查看

win7显卡在哪看?显卡对我们电脑的性能来说是非常重要的&#xff0c;很多用户在购买电脑的时候&#xff0c;显卡的好坏也是首要的选项&#xff0c;不过有一些用户到目前为止还不知道win7系统显卡在哪查看&#xff0c;小编就来告诉大家win7查看显卡型号的操作办法。 win7系统显…

新版火狐浏览器怎么调整字体 火狐浏览器字体调整技巧分享

相信有了解的朋友都清楚&#xff0c;官方在新版火狐浏览器中不仅优化了UI设计&#xff0c;还带来了一些细微的变化与改进。那么&#xff0c;新版火狐浏览器该怎么调整字体呢?下面小编就来分享一下火狐浏览器字体调整技巧&#xff0c;有需要的朋友可以稍作参考。 方法步骤 打…

Java面试题(亲身经历)

abstract class和interface的区别 1.interface需要实现&#xff0c;用implements&#xff0c;而abstract class需要继承&#xff0c;用extends2.一个类可以实现多个接口&#xff0c;但只能实现一个抽象类3.interface强调特定功能的实现&#xff0c;而abstract class强调所属关系…

ie浏览器收藏夹位置更改步骤

ie浏览器收藏夹位置更改步骤 ie浏览器收藏夹位置怎么更改?我们知道&#xff0c;系统盘空间的大小对于系统的运行速度有很大的影响&#xff0c;所以我们应该尽量减少系统盘的压力&#xff0c;而由于IE浏览器的收藏夹默认在系统盘&#xff0c;下面浏览器家园小编就教你如何更改收…

毕业论文经验

以前总听学长学姐们抱怨论文烦答辩烦&#xff0c;想想不就写一个字多的作文嘛有啥难的。最近轮到自己写论文了&#xff0c;才知此中痛苦&#xff0c;特此总结经验&#xff0c;告诫后人。 模板 论文的模板每个学校基本都有&#xff0c;字体、间距、参考文献格式基本都有&#…

QQ浏览器书签栏不见了怎么办 找回QQ浏览器书签栏方法

QQ浏览器是腾讯旗下的一款高速浏览器&#xff0c;基于腾讯庞大的用户量&#xff0c;QQ浏览器也是有不少用户使用。在使用QQ浏览器时&#xff0c;我们注意地址栏下方书签栏的存在&#xff0c;书签栏给我们提供极为便利的网页收藏功能&#xff0c;基于它是腾讯系软件&#xff0c;…

MyEclipse 2015优化技巧

MyEclipse 2015优化速度方案仍然主要有这么几个方面&#xff1a;去除无需加载的模块、取消冗余的配置、去除不必要的检查、关闭更新。第一步: 去除不需要加载的模块 一个系统20%的功能往往能够满足80%的需求&#xff0c;MyEclipse也不例外&#xff0c;我们在大多数时候只需要20…

谷歌浏览器怎么打开flash Chrome启用flash插件技巧分享

或许是由于flash多次曝出安全问题&#xff0c;苹果和谷歌先后对其进行限制&#xff0c;谷歌更是在新版Chrome浏览器中直接禁用了flash插件。而在访问某些必须使用flash插件的网站时&#xff0c;则需要手动开启相关的权限!那么&#xff0c;谷歌浏览器要怎么打开flash呢?让我们来…

MyBatis传入参数与parameterType

1. 传入简单类型 JAVA代码: Java代码 public User get(Long id) { return (User) getSqlSession().selectOne("com.liulanghan.get" , id); } MAPPER : Xml代码 <select id"findUserListByIdList" parameterType"java.lang.Long&q…

Mybatis的xml配置实例

主表&#xff1a; <?xml version"1.0" encoding"UTF-8"?><!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.1//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- 软件信息数据查询相关 yangxuefe…

火狐浏览器Firefox怎样设置中文

火狐浏览器Firefox怎样设置中文&#xff1f;很多用户从官网下载火狐浏览器后&#xff0c;会发现他默认的是英文版&#xff0c;不知道如何更改为中文版&#xff0c;下面小编就为大家介绍下Firefox设置中文方法。 如果下载的是官方版的火狐浏览器&#xff0c;默认的预言可能会是…

qq浏览器如何进入私密 qq浏览器怎样进入私密

随着移动互联网的发展&#xff0c;越来越多人使用QQ浏览器浏览新闻&#xff0c;有时想开启文件私密空间&#xff0c;那么QQ浏览器如何开启文件私密空间呢?下面让小编告诉一下详细操作步骤。 打开手机&#xff0c;找到“QQ浏览器”图标并点击它。 <a styleqq浏览器如何进入…

win7系统屏保时间设置更改教程

win7的屏保可以在我们短暂离开电脑时节省电量&#xff0c;延长屏幕存活时间&#xff0c;还可以保护屏幕信息不泄露出去&#xff0c;但是如果屏保时间设置不好可能就起不到作用&#xff0c;因此我们可以在个性化设置中对屏保时间进行手动设置&#xff0c;下面就一起来看一下win7…

Easyui+Spring+Mybatis完整示例(前台)

典型的EasyuiSpringMybatis例子,方便自己的记忆.JSP:<% page language"java" contentType"text/html; charsetUTF-8"pageEncoding"UTF-8"%> <% String path request.getContextPath(); String basePath request.getScheme()"://…

win7系统管理员权限更改教程

我们在使用win7系统的时候&#xff0c;有时候会发现自己的账户因为没有管理员权限从而无法更改某些设置或者打开一些文件&#xff0c;非常不方便&#xff0c;因此我们可以通过下面的方法让自己获得管理员权限&#xff0c;下面就一起来看一下win7系统管理员权限更改教程吧。 wi…

Highcharts+Spring饼图使用实例

项目上要用到Hightcharts展示平台机器占用情况,使用这类第三方插件很方便就能实现 JSP: <script type"text/javascript" src"<%basePath%>/resources/thirdparty/highcharts/highcharts.js"></script><div id"machineRate"…

win7更改适配器设置没有本地连接解决方法

最近有很多朋友反映遇到了需要更改适配器设置时&#xff0c;发现我们的适配器设置中没有本地连接&#xff0c;这有可能是因为我们的网卡没有插好&#xff0c;也可能是网卡驱动出现了问题&#xff0c;可以使用下面的方法进行排查和解决。下面小编介绍win7更改适配器设置没有本地…