分页技术实现
在开发网站的项目中难免会遇到各种各样的分页操作,分页的方法多种多样,现在将我在项目开发中的使用到的通用分页技术(既可以使用在jsp中,也可以使用在servlet,struts中,使用于多种数据库)分享给大家,供参考;
首先:在数据库操作的类中准备两个方法,一个是查询数据的方法,一个是获取总页数的方法
1)数据查询方法:
public List<StudentBean> getPage_student(int currentPage, int pageSize) {
List<StudentBean> list = new ArrayList<StudentBean>();
String sql = "select * from student where 1=1";
try {
int beginrow = pageSize * (currentPage - 1);// 开始的位置
int endrow = currentPage * pageSize;// 终止的位置
int currentNum = 0;// 经历的行数
conn = db.getConnection();//获取数据库连接
pstmt = conn.prepareStatement(sql);//执行sq语句
rs = pstmt.executeQuery();
while (rs.next()) {
if (currentNum >= beginrow && currentNum < endrow) {
StudentBean student = new StudentBean();//实例化一个实体类
student.setId(rs.getInt("id"));
student.setAge(rs.getInt("age"));
student.setName(rs.getString("name"));
student.setSex(rs.getString("sex"));
student.setAddress(rs.getString("address"));
list.add(student);
if(currentNum == endrow - 1)
break;
}
currentNum ++;
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
2)获取分页的总页数:
public int getPageSize(int count){//获取总的页数
int total = 0;
String sql = "select count(*) from student";
try{
conn = db.getConnection();
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
if(rs.next()){
int records = rs.getInt(1);
if(records%count==0){
total = records / count;
}else{
total = records / count + 1;
}
}
}catch(Exception ex){
ex.printStackTrace();
}
return total;
}
以上工作完成以后,在准备一个分页功能的逻辑功能方法 (通常放在util包中)
public class PageInfo {
private int total;//总页数
private int curpage;//当前页
private int count;//每页显示记录数
private List<StudentBean> list;//接受数据库操作的方法返回的数组
private StudentDAO dao = new StudentDAO();//实例化数据库操作的类
public List<StudentBean> getList(){
list = dao.getPage_student(curpage,count);//开始进行分页
return list;
}
public PageInfo(int curpage){
this.curpage = curpage;
}
public void setTotal(){
this.total = dao.getPageSize(count);//得到总的页数
}
public int getTotal(){
return this.total;
}
public void setCurpage(int curpage){
this.curpage = curpage;
}
public int getCurpage(){
return this.curpage;
}
public void setCount(int count){
this.count = count;
}
public int getCount(){
return this.count;
}
至此,准备工作已经全部完成,下面在jsp页面中做分页演示
pageSize.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@page import="com.gb.util.PageInfo"%>
<%@page import="com.gb.entity.StudentBean"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>分页功能的实现</title>
<%
int currentPage = 1;//开始默认第一页
String c = request.getParameter("currentPage");//获取当前页
if(c!=null && !c.equals("")){
currentPage = Integer.parseInt(c);
}
PageInfo infos = new PageInfo(currentPage);
infos.setCurpage(currentPage);
infos.setCount(2);//每一页显示的页数
infos.setTotal();
%>
</head><body><center>
<h1>学生信息</h1>
<table width="50%">
<tr>
<td>学号</td>
<td>姓名</td>
<td>年龄</td>
<td>性别</td>
<td>地址</td>
</tr>
<%
List<StudentBean> list = infos.getList();
for(int i=0;i<list.size();i++){
StudentBean bean = (StudentBean)(infos.getList()).get(i);
%>
<tr>
<td><%=bean.getId() %></td>
<td><%=bean.getName() %></td>
<td><%=bean.getAge() %></td>
<td><%=bean.getSex() %></td>
<td><%=bean.getAddress()%></td>
</tr>
<% }%>
<tr>
<td colspan="5" align="center">
<a href="pageSize.jsp?currentPage=1">首页</a>
<%
int counts = infos.getTotal();
for(int i=0;i<counts;i++){
%>
<a href="pageSize.jsp?currentPage=<%=i+1%>"><%=i+1%></a>
<%} %>
<%
int countes = infos.getTotal();
%>
<a href="pageSize.jsp?currentPage=<%=countes%>">尾页</a>
</td>
</tr>
</table>
</center>
</body>
</html>
以上就是分页技术的实现,即供参考
在开发网站的项目中难免会遇到各种各样的分页操作,分页的方法多种多样,现在将我在项目开发中的使用到的通用分页技术(既可以使用在jsp中,也可以使用在servlet,struts中,使用于多种数据库)分享给大家,供参考;
首先:在数据库操作的类中准备两个方法,一个是查询数据的方法,一个是获取总页数的方法
1)数据查询方法:
public List<StudentBean> getPage_student(int currentPage, int pageSize) {
List<StudentBean> list = new ArrayList<StudentBean>();
String sql = "select * from student where 1=1";
try {
int beginrow = pageSize * (currentPage - 1);// 开始的位置
int endrow = currentPage * pageSize;// 终止的位置
int currentNum = 0;// 经历的行数
conn = db.getConnection();//获取数据库连接
pstmt = conn.prepareStatement(sql);//执行sq语句
rs = pstmt.executeQuery();
while (rs.next()) {
if (currentNum >= beginrow && currentNum < endrow) {
StudentBean student = new StudentBean();//实例化一个实体类
student.setId(rs.getInt("id"));
student.setAge(rs.getInt("age"));
student.setName(rs.getString("name"));
student.setSex(rs.getString("sex"));
student.setAddress(rs.getString("address"));
list.add(student);
if(currentNum == endrow - 1)
break;
}
currentNum ++;
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
2)获取分页的总页数:
public int getPageSize(int count){//获取总的页数
int total = 0;
String sql = "select count(*) from student";
try{
conn = db.getConnection();
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
if(rs.next()){
int records = rs.getInt(1);
if(records%count==0){
total = records / count;
}else{
total = records / count + 1;
}
}
}catch(Exception ex){
ex.printStackTrace();
}
return total;
}
以上工作完成以后,在准备一个分页功能的逻辑功能方法 (通常放在util包中)
public class PageInfo {
private int total;//总页数
private int curpage;//当前页
private int count;//每页显示记录数
private List<StudentBean> list;//接受数据库操作的方法返回的数组
private StudentDAO dao = new StudentDAO();//实例化数据库操作的类
public List<StudentBean> getList(){
list = dao.getPage_student(curpage,count);//开始进行分页
return list;
}
public PageInfo(int curpage){
this.curpage = curpage;
}
public void setTotal(){
this.total = dao.getPageSize(count);//得到总的页数
}
public int getTotal(){
return this.total;
}
public void setCurpage(int curpage){
this.curpage = curpage;
}
public int getCurpage(){
return this.curpage;
}
public void setCount(int count){
this.count = count;
}
public int getCount(){
return this.count;
}
至此,准备工作已经全部完成,下面在jsp页面中做分页演示
pageSize.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%@page import="com.gb.util.PageInfo"%>
<%@page import="com.gb.entity.StudentBean"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>分页功能的实现</title>
<%
int currentPage = 1;//开始默认第一页
String c = request.getParameter("currentPage");//获取当前页
if(c!=null && !c.equals("")){
currentPage = Integer.parseInt(c);
}
PageInfo infos = new PageInfo(currentPage);
infos.setCurpage(currentPage);
infos.setCount(2);//每一页显示的页数
infos.setTotal();
%>
</head><body><center>
<h1>学生信息</h1>
<table width="50%">
<tr>
<td>学号</td>
<td>姓名</td>
<td>年龄</td>
<td>性别</td>
<td>地址</td>
</tr>
<%
List<StudentBean> list = infos.getList();
for(int i=0;i<list.size();i++){
StudentBean bean = (StudentBean)(infos.getList()).get(i);
%>
<tr>
<td><%=bean.getId() %></td>
<td><%=bean.getName() %></td>
<td><%=bean.getAge() %></td>
<td><%=bean.getSex() %></td>
<td><%=bean.getAddress()%></td>
</tr>
<% }%>
<tr>
<td colspan="5" align="center">
<a href="pageSize.jsp?currentPage=1">首页</a>
<%
int counts = infos.getTotal();
for(int i=0;i<counts;i++){
%>
<a href="pageSize.jsp?currentPage=<%=i+1%>"><%=i+1%></a>
<%} %>
<%
int countes = infos.getTotal();
%>
<a href="pageSize.jsp?currentPage=<%=countes%>">尾页</a>
</td>
</tr>
</table>
</center>
</body>
</html>
以上就是分页技术的实现,即供参考