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 其 ...
随机推荐
- PyQt4入门学习笔记(五)
PyQt4里的对话框 对话框是大多数GUI应用中不可分割的一部分.一个对话框是两者或多者的会话.在GUI内,对话框是应用向人说话的方式.一个对话框可以用来输入数据,修改数据,改变应用设置等等. QtG ...
- [占位-未完成]scikit-learn一般实例之十二:用于RBF核的显式特征映射逼近
It shows how to use RBFSampler and Nystroem to approximate the feature map of an RBF kernel for clas ...
- APNS 远程推送通知 PUSH deviceToken
服务器向客户端推送消息: 当应用程序推到后台,或者根本就没有运行(我们的代码无能为力) 如果这种情况之下,应用程序想和用户交互(传统的做法 不可能) 推送 APNS:Ap ...
- ubuntu Chromium 安装 pepperflashplugin
sudo apt-get update sudo apt-get install chromium-browser sudo apt-get install pepperflashplugin-non ...
- java web学习总结(二十九) -------------------JavaBean的两种开发模式
SUN公司推出JSP技术后,同时也推荐了两种web应用程序的开发模式,一种是JSP+JavaBean模式,一种是Servlet+JSP+JavaBean模式. 一.JSP+JavaBean开发模式 1 ...
- C++01.类的引入
1.假设我们要输出张三,李四两个人的基本信息,包括姓名,年龄,可以用以下的C程序实现: eg: #include <stdio.h> int main(int argc,char **ar ...
- 图片的赖加载(lazyLoad)
懒加载的意义(在线demo预览) 尽管很多公司的网页都有一些限制,比如页面的最大的图片大小不得大于50k,也有很多图片优化工具fis3.gulp等等,但是如果图片太多还是会影响页面的加载速度,快则几十 ...
- Atitit.安全性方案规划设计4gm v1 q928
Atitit.安全性方案规划设计4gm v1 q928 1. 安全架构设计与功能安全检测1 2. https1 3. 账号安全体系1 4. 配置文件安全 1 5. 源码加密与安全2 6. 最高强度的 ...
- Autodesk 为其云技术发布新品牌- Autodesk Forge
近些年来Autodesk陆续发布了不少云解决方案和服务,比如BIM 360, Infraworks 360,Autodesk 360/A360, AutoCAD 360等等,这些众多叫做360的产品或 ...
- iOS之获取经纬度并通过反向地理编码获取详细地址
_locationManager = [[CLLocationManager alloc] init]; //期望的经度 _locationManager.desiredAccuracy = kCLL ...