JSP分页实例

分页技术实现

在开发网站的项目中难免会遇到各种各样的分页操作,分页的方法多种多样,现在将我在项目开发中的使用到的通用分页技术(既可以使用在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>
以上就是分页技术的实现,即供参考
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值