java 分页功能
1.分页工具类
package com.bw.shop.util;
import java.util.List;
import com.sun.org.apache.regexp.internal.recompile;
public class PageModel {
private List list; //结果集
private int totalRecords; //查询记录
private int pageSize; //每页记录条数
private int pageNo; //当前页数
private int totalPages; //总页数
private int previousPageNo;
private int nextPageNo;
private int bottomPage;
public PageModel(){
}
public PageModel(int pageNo,int pageSize,int totalRecords,List list){
this.pageNo = pageNo;
this.pageSize = pageSize;
this.totalRecords = totalRecords;
this.list = list;
}
public int getTotalPages(){
if (totalRecords%pageSize == 0)
totalPages = totalRecords / pageSize;
else
totalPages = totalRecords / pageSize + 1;
return totalPages;
}
//获取首页
public int getTopPageNo(){
return 1;
}
//上一页
public int getPreviousPageNo(){
if (pageNo<=1) {
previousPageNo = 1;
}else {
previousPageNo = pageNo - 1;
}
return previousPageNo;
}
//下一页
public int getNextPageNo() {
if (pageNo >= getBottomPageNo()) {
nextPageNo = getBottomPageNo();
} else {
nextPageNo = pageNo + 1;
}
return nextPageNo;
}
2.实现获取分页结果集和获取总的记录条数
//取得分页的结果集合
public List<Link> findByPage(int pageNo,int pageSize) {
List<Link> list = new ArrayList<Link>();
String sql = "SELECT * FROM Link order by sort limit "+(pageNo-1)*pageSize+","+pageSize+" ";
Connection conn = JdbcUtil.getConn();
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery(); // 取得数据库端的查询结果集合
while (rs.next()) { // 每次判断是否有下一条数据,它从标题栏开始算
Link bean = new Link();// 每次取一行数据,就将该行数据 封装到Link对象中
bean.setLid(rs.getInt(1));
bean.setTitle(rs.getString(2));
bean.setImgpath(rs.getString(3));
bean.setUrl(rs.getString(4));
bean.setInfo(rs.getString(5));
bean.setIsshow(rs.getInt(6));
bean.setSort(rs.getInt(7));
// 将对象存入程序端的集合中
list.add(bean);
}
} catch (SQLException e) {
e.printStackTrace();
}
JdbcUtil.closeAll(rs, ps, conn); return list; } //取得总的记录条数
public int getTotalRecords() {
int total=0;
String sql = "SELECT count(*) FROM Link ";
Connection conn = JdbcUtil.getConn();
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = conn.prepareStatement(sql);
rs = ps.executeQuery(); // 取得数据库端的查询结果集合
if (rs.next()) { // 每次判断是否有下一条数据,它从标题栏开始算
total=rs.getInt(1);
}
} catch (SQLException e) {
e.printStackTrace();
}
JdbcUtil.closeAll(rs, ps, conn); return total; }
3.servlet操作
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//设置当前页数,默认是第1页
int pageNo =Integer.parseInt( request.getParameter("pageNo")==null?"1":request.getParameter("pageNo"));
LinkService linkService=new LinkServiceImpl();
int totalRecords = linkService.getTotalRecords();
//取得分页的结果集合
List list = linkService.findByPage(pageNo, 3);
//封装存值
PageModel pageModel = new PageModel(pageNo, 3, totalRecords, list);
request.setAttribute("pageModel", pageModel);
//跳转
request.getRequestDispatcher("linkList.jsp").forward(request, response);
}
4.赋值
<TR class="td-block" align=middle>
<TD height=19 width="100%" colSpan=4 align=right>
<a href=${pageModel.pageNo==1?"#":"LinkServlet?pageNo=1"}> 首 页 </a>
<a href="LinkServlet?pageNo=${pageModel.previousPageNo}"> 上一页 </a>
<A href="LinkServlet?pageNo=${pageModel.nextPageNo}">下一页</A>
<A href="LinkServlet?pageNo=${pageModel.bottomPageNo}">尾页</A>
${pageModel.pageNo}/${pageModel.totalPages} 页
<FONT color=red>${pageModel.pageSize}</FONT>条记录/页,共<FONT color=red>${pageModel.totalRecords}</FONT>条记录
<SELECT class="input" onchange=javascript:document.location='LinkServlet?pageNo='+this.value >
<%PageModel pageModel = (PageModel) request.getAttribute("pageModel");
for (int i = 0; i < pageModel.getTotalPages(); i++) {
out.println(" <OPTION "+((pageModel.getPageNo() == (i + 1)) ? "selected": "") + " value=" + (i + 1) + ">第"+ (i + 1) + "页</OPTION>");
}%>
<INPUT value=1 type=hidden name=forward></TD></TR>
java 分页功能的更多相关文章
- java分页功能代码
import java.util.ArrayList; import java.util.List; /** * * @author cheney * * @date Aug 31, 2012 */ ...
- java ssm框架实现分页功能 (oracle)
java web 实现分页功能 使用框架:ssm 数据库:oracle 话说 oracle 的分页查询比 mysql 复杂多了,在这里简单谈一下: 查询 前十条数据: SELECT * FROM( S ...
- Java Web -【分页功能】详解
分页简介 分页功能在网页中是非常常见的一个功能,其作用也就是将数据分割成多个页面来进行显示. 使用场景: 当取到的数据量达到一定的时候,就需要使用分页来进行数据分割. 当我们不使用分页功能的时候,会面 ...
- 第83节:Java中的学生管理系统分页功能
第83节:Java中的学生管理系统分页功能 分页功能一般可以做成两种,一种是物理分页,另一种是逻辑分页.这两种功能是有各自的特点的,物理分页是查询的时候,对数据库进行访问,只是查一页数据就进行返回,其 ...
- Java Web(十) 分页功能
分页 分页的使用非常普遍,现在一步步的把分页功能实现出来,先看看已经写好的效果: 该页面的所有数据都存放在一个javaBean对象(PageBean)里,每次访问该页面时,Serlvet就会把page ...
- Java分页需求
近期在实现项目接口时,经常需要分页功能.有时返回“String”,有时是“Object”格式的分页List.针对这种情况,本人用java实现对List分页. 第一版 package org.sun.j ...
- 【Bootstrap】Bootstrap和Java分页-第一篇
目录 关于此文 pagination BetweenIndex DefaultPagination QueryHandler BookDaoImpl BookServiceImpl BookActio ...
- python面向对象进阶 反射 单例模式 以及python实现类似java接口功能
本篇将详细介绍Python 类的成员.成员修饰符.类的特殊成员. 类的成员 类的成员可以分为三大类:字段.方法和特性. 注:所有成员中,只有普通字段的内容保存对象中,即:根据此类创建了多少对象,在内存 ...
- 【jQuery 分页】jQuery分页功能的实现
自写的jQuery实现分页功能的分页组件: 功能效果如下: 分页组件就是上图中的三部分, 分别放在表格上部 和下部 . 其中, 1>>>页面的代码如下: product.jsp 其 ...
随机推荐
- ASP.NET MVC 发送邮件(异步)
最近写邮件发送搞死人了,最后的结果,真是醉了,现整理如下: 网上一搜一大把,到处都是.NET发送邮件的方法,我这里也大同小异的写了一个. 准备一个MailHelper.cs通用类,如下所示: 重要的命 ...
- C# async/await 使用总结
今天搞这两个关键字搞得有点晕,主要还是没有彻底理解其中的原理. 混淆了一个调用异步方法的概念: 在调用异步方法时,虽然方法返回一个 Task,但是其中的代码已经开始执行.该方法在调用时,即刻执行了一部 ...
- 修复 Visual Studio Error “No exports were found that match the constraint”
清空Visual Studio 文件缓存目录 Just delete or rename this folder: %AppData%\..\Local\Microsoft\VisualStudio\ ...
- 查看Sql Server被锁的表以及解锁
查看被锁表: select spId from master..SysProcesses where db_Name(dbID) = '数据库名称' and spId <> @@SpId ...
- iOS-多线程介绍
一.前言部分 最近在面试,重新温习了一遍多线程,希望加深一遍对于多线程的理解. 1.什么是进程? 1).要了解线程我们必须先了解进程,通俗来讲进程就是在系统中运行的一个应用程序. 2).每个线程之间是 ...
- c++ builder TIdHttp 获取不到cookie
用c++ builder 的TIdHttp组件Get一个ASP.Net MVC服务器的一个页面,获取页面中Cookie信息,修改后Post到服务器上去. 在本地调试的时候可以获取到,部署到服务器上就获 ...
- centos下升级mysql后遇到的小问题
记录今天遇到的一个小问题, 写一个app访问接口涉及到通过存储过程反馈多个结果集,但是反回多个结果集的存储过程,调用之后只能反回一个了,而且奇怪的是,即使直接在mysql上同时执行两条查询语句,第一条 ...
- AEAI ESB培训大纲
1. 概述 本文档的目的是为了让使用者能更好的操作.维护.服务于整个ESB系统平台,该信息系统平台不仅需要成熟稳定的产品,更需要技术熟练的运行维护人员,以便能更好地进行科学有效的运行维护工作. AEA ...
- Sharepoint2013 AD组用户不同步
背景: SP2013列表库使用AD安全组授权访问,向AD安全组添加一个用户A,在Sharepoint AD同步(增量和完全)后,用户A仍然无法访问列表库:原因: 参考:安全令牌上的缓存 SP2013 ...
- 使用WebRTC搭建前端视频聊天室——点对点通信篇
WebRTC给我们带来了浏览器中的视频.音频聊天体验.但个人认为,它最实用的特性莫过于DataChannel——在浏览器之间建立一个点对点的数据通道.在DataChannel之前,浏览器到浏览器的数据 ...