1.创建Pager类
package com.yan.shop.model;
import java.util.List;
public class Pager<E> {
/**
* 当前页码
*/
private int pageIndex;
/**
* 每页数目
*/
private int pageSize;
/**
* 总共条数
*/
private int totalRecord;
/**
* 总页数
*/
private int totalPage;
/**
* 具体内容
*/
private List<E> datas;
public int getPageIndex() {
return pageIndex;
}
public void setPageIndex(int pageIndex) {
this.pageIndex = pageIndex;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalRecord() {
return totalRecord;
}
public void setTotalRecord(int totalRecord) {
this.totalRecord = totalRecord;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public List<E> getDatas() {
return datas;
}
public void setDatas(List<E> datas) {
this.datas = datas;
}
}
2.通过jdbc按照条件填充列表public Pager<User> list(int pageIndex,int pageSize) {
Connection con=null;
PreparedStatement ps=null;
ResultSet rs=null;
Pager<User> page=new Pager<User>();
List<User> users=new ArrayList<User>();
User u=null;
try{
if(pageIndex<=0)
{pageIndex=1;}
int start=(pageIndex-1)*pageSize;
con=DBUtil.getConnection(); String sql="select * from t_user limit ?,?";
String sqlCount="select count(*) from t_user";
ps=con.prepareStatement(sql);
ps.setInt(1, start);
ps.setInt(2, pageSize );
rs=ps.executeQuery();
while(rs.next()){
u=new User();
u.setId(rs.getInt("id"));
u.setNickname(rs.getString("nickname"));
u.setPassword(rs.getString("password"));
u.setUsername(rs.getString("username"));
u.setStatus(rs.getInt("status"));
u.setType(rs.getInt("type"));
users.add(u);
}
ps=con.prepareStatement(sqlCount);
rs=ps.executeQuery();
int totalRecord=0;
while(rs.next()){
totalRecord=rs.getInt(1);
}
int totalPage=(totalRecord-1)/pageSize+1;
page.setPageIndex(pageIndex);
page.setPageSize(pageSize);
page.setTotalPage(totalPage);
page.setTotalRecord(totalRecord);
}catch(SQLException e){
e.printStackTrace();
}finally{
DBUtil.close(rs);
DBUtil.close(ps);
DBUtil.close(con);
}
page.setDatas(users);
return page;
}
3.应用,这是list.jsp页面,list是userdao的一个方法,故先创建userdao,通过list()实例化一个page
<%@page import="com.yan.shop.model.Pager"%>
<%@page import="com.yan.shop.model.User"%>
<%@page import="java.util.List"%>
<%@page import="com.yan.shop.dao.IUserDao"%>
<%@page import="com.yan.shop.dao.DAOFactory"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<%
IUserDao userDao=DAOFactory.getUserDao();
int pageIndex=1;
try{
pageIndex=Integer.parseInt(request.getParameter("pageIndex"));
}catch(NumberFormatException e){}
int pageSize=1;
Pager<User> pa=userDao.list(pageIndex,pageSize);
List<User> users=pa.getDatas();
User loginUser=(User)session.getAttribute("loginUser");
%>
</head>
<body>
<jsp:include page="inc.jsp">
<jsp:param value="管理" name="op"/>
</jsp:include>
<table align="center" border="1" width="800">
<tr>
<td>用户标识</td>
<td>用户名</td>
<td>用户密码</td>
<td>用户昵称</td>
<td>用户类型</td>
<td>用户状态</td>
<th>操作</th>
</tr>
<%for(User u:users){
%>
<tr>
<td><%=u.getId() %></td>
<td><%=u.getUsername() %></td>
<td><%=u.getPassword() %></td>
<td><%=u.getNickname() %></td>
<td>
<%if(u.getType()==0){
%>普通用户
<%if(loginUser.getType()==1) {%>
<a href="setType.jsp?id=<%=u.getId()%>">设置管理员</a><% }
}else{
%>管理员<%if(loginUser.getType()==1) {%><a href="setType.jsp?id=<%=u.getId()%>">取消管理员</a><%}
} %>
</td>
<td>
<%if(u.getStatus()==0){
%>启用
<%if(loginUser.getType()==1) {%><a href="setStatus.jsp?id=<%=u.getId()%>">停用</a> <%}
}else{
%><span style='color:red'>停用</span><%if(loginUser.getType()==1) {%><a href="setStatus.jsp?id=<%=u.getId()%>">启用</a><%}
} %>
</td>
<td>
<% if(loginUser.getType()==1){%>
<a href="delete.jsp?id=<%=u.getId() %>">删除</a> <a href="updateInput.jsp?id=<%=u.getId()%>">更新</a></td>
</tr>
<%}
}
%>
<tr>
<td colspan="7" align="center">一个有<%=pa.getTotalPage() %>页,当前为第<%=pa.getPageIndex() %>页</td>
</tr>
<tr>
<td colspan="7" align="center">
<%if(pageIndex==1){%>[上一页]<% }else{%><a href="list.jsp?pageIndex=<%=pageIndex-1 %>">[上一页]</a><% }%>
<a href="list.jsp?pageIndex=<%=1 %>">[首页]</a>
<% int totalPage=pa.getTotalPage();
for(int i=1;i<=totalPage;i++) {
if(i==pageIndex){
out.println(i);
}else{
%>
<a href="list.jsp?pageIndex=<%=i %>">[<%=i %>]</a>
<%} }%>
<a href="list.jsp?pageIndex=<%=totalPage %>">[尾页]</a>
<%if(pageIndex==totalPage){%>[下一页]<% }else{%><a href="list.jsp?pageIndex=<%=pageIndex+1 %>">[下一页]</a><% }%>
</tr>
</table>
</body>
</html>
本文介绍了一个简单的分页查询实现方案,包括定义分页类、通过 JDBC 操作数据库获取分页数据,以及在 JSP 页面展示分页内容。该方案适用于 Java Web 开发中的基本分页需求。
1623

被折叠的 条评论
为什么被折叠?



