关于MVC实现分页

本文介绍了在MVC模式下如何实现分页功能。通过DBService.java类展示了如何计算总页数和获取指定页的用户信息,以及在JSP中展示分页链接。示例代码包括了数据库查询、预编译语句以及JSP中的动态内容渲染。
摘要由CSDN通过智能技术生成

前几天开发一个人员管理系统,使用MVC模式开发,有好多地方用到了分页,于是想把分页写出来,给不太熟的朋友们参考下。

这是在BO层的代码,该类的名字是DBService.java

首先我们需要定义四个变量

int pageSize = 4;//指定每页显示3条记录
int pageCount;//该值是计算出来的,表示共有多少页
int rowCount; //表示共有多少条记录,从数据库查询得到的
int rowNum;  //表示第几行



static PreparedStatement ps = null;
static ResultSet rs = null;

//返回分页的总页数
public int getPageCount()
{
Connection cn = null;
try
{
cn = ConnectionDB.getConnection();
//查出共有多少页
ps = cn.prepareStatement("select count(*) from users");
rs = ps.executeQuery();
rs.next();
rowCount = rs.getInt(1);
pageCount = (rowCount - 1)/pageSize + 1;
}
catch (Exception e) {
e.printStackTrace();
}
finally
{

  //这是我封装起来的类,就是用来关闭对数据库的操作的,大家可以按照自己的想法写
ConnectionDB.closeResultSet(rs);          
ConnectionDB.closePreparedStatement(ps);
ConnectionDB.closeConnection(cn);
}
return pageCount;
}

//得到用户需要显示的用户信息
public ArrayList getUsersByPage(int pageNow)
{

Connection cn = null;
ArrayList al = new ArrayList();
try
{
//计算从第几行开始显示
rowNum = (pageNow - 1) * 4;
//分页查询,我使用的是mysql数据库,分页查询的语句根据所使用的数据库不同有可能有差异,可到网上查找对应数据库的分页查询语句
cn = ConnectionDB.getConnection();
ps = cn.prepareStatement("select * from users order by id asc limit ?,4;");
ps.setInt(1, rowNum);
rs = ps.executeQuery();
while (rs.next()) {
User user = new User();
user.setId(rs.getInt(1));
user.setPassword(rs.getString(2));
user.setUsrename(rs.getString(3));
user.setEmail(rs.getString(4));
user.setGrade(rs.getString(5));

//将user放到al当中去,绝对不能忘记,不然得到al的值为空
al.add(user);
}
}
catch (Exception e) {
e.printStackTrace();
}
finally
{
ConnectionDB.closeResultSet(rs);
ConnectionDB.closePreparedStatement(ps);
ConnectionDB.closeConnection(cn);
}
return al;
}


//在jsp当中的代码

<% 
    //定义分页所需要的变量
    int pageNow = 1;//当前页
    String spageNow = request.getParameter("pageNow");
    if(spageNow != null)
    {
    pageNow = Integer.parseInt(spageNow);
    }
   
   
DBService db = new DBService();
ArrayList al = db.getUsersByPage(pageNow);


%>
<table border=1 width=500>
<tr>
<th>ID</th>
<th>密码</th>
<th>用户名</th>
<th>Email</th>
<th>等级</th>
<th>修改用户</th>
<th>删除用户</th>
</tr>
<%
for(int i = 0 ; i< al.size(); i ++)
{
User user = (User)al.get(i);
%>
<tr>
<td><%=user.getId()%></td>
<td><%=user.getPassword()%></td>
<td><%=user.getUsrename()%></td>
<td><%=user.getEmail()%></td>
<td><%=user.getGrade()%></td>
<td><a href="/UserManagerSys/ModifyUser.jsp?id=<%=user.getId()%>
&password=<%=user.getPassword()%>
&username=<%=user.getUsrename()%>
&email=<%=user.getEmail()%>
&grade=<%=user.getGrade()%>">
修改用户</a></td>
<td><a href="javascript:if(confirm('确实要删除该用户吗?'))location='/UserManagerSys/DelControl?id=<%=user.getId()%>'">删除用户</a></td>

</tr>
<%
}
%>
</table> <br/>
<%
//得到pagecount
int pageCount = db.getPageCount();

if(pageNow > 1)
{
%>
<a href='/UserManagerSys/Main.jsp?pageNow=<%=(pageNow-1)%>'>上一页</a>
<%
}
for(int i = 1; i <= pageCount; i ++)
{
%>
<a href='/UserManagerSys/Main.jsp?pageNow=<%=i%>'><%=i %></a>
<%
}
if(pageNow < pageCount)
{
%>
<a href='/UserManagerSys/Main.jsp?pageNow=<%=(pageNow+1)%>'>下一页</a>
<%
}
%>
(当前第<%=pageNow%>页/共<%=pageCount%>页)


实现分页功能本身的代码不是很多,给大家一个参考,欢迎大家多讨论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值