jsp中实现数据的分页显示

JSP中如何实现分页

大致思路:
首先,从数据库中取出所有记录,保存在一个容器中(当然容器有很多种,我们可以随便选)。然后,我们根据链接传递的参数来从容器中取出需要显示的记录。
当然这种方法的效率很低下,因为我们是一次将所有数据都查询出来,然后保存在一个容器当中,其实我们可以通过链接传递的参数来将需要在当前页显示的数据保存在一个容器中,这样查询效率和存储空间都得到了极大的提高。由于对top语句的用法还不是很了解再加上马上就要交作业,于是就选取了前面的方法。等暑假做项目的时候再把第二种方法实现一下!
public ArrayList<CommonAdmin> select(){
ArrayList<CommonAdmin> list=new ArrayList<CommonAdmin>();
Connection con=ConnDB.getConn();
String strsql="select * from commonAdmin";
try{
PreparedStatement pstmt=con.prepareStatement(strsql);
ResultSet rs=pstmt.executeQuery();
while(rs.next()){
CommonAdmin commonAdmin=new CommonAdmin();
commonAdmin.setId(rs.getInt("id"));
commonAdmin.setName(rs.getString("name"));
commonAdmin.setCommonAdminName(rs.getString("commonAdminName"));
commonAdmin.setSex("sex");
commonAdmin.setEmail(rs.getString("email"));
commonAdmin.setCellphone(rs.getString("cellphone"));
list.add(commonAdmin);
}
}catch(Exception e){
e.printStackTrace();
}
return list;
}
通过这个函数我们可以得到查询的结果集list.(我将这个方法封装在了一个CommonAdminMgr的类中)
下面我们需要读取list里面对应的值。
CommonAdminMgr mgr=new CommonAdminMgr();
ArrayList<CommonAdmin> list=new ArrayList<CommonAdmin>();
CommonAdmin commonAdmin=new CommonAdmin();
list=mgr.select();
int pageSize=5;//每页显示的记录数
int rowCount=list.size();//所有记录数
int pageCount=(rowCount%pageSize==0)?rowCount/pageSize:rowCount/pageSize+1;//总共分页数目
int page1;//待显示页码
String strpage=request.getParameter("page");
if(strpage==null){
//表明在QueryString中没有page这一个参数,此时显示第一页数据
page1=1;
}else{
page1=Integer.parseInt(strpage);
if(page1<1){
page1=1;
}
}
int size=list.size();

下面我们通过一个循环输出想要得到的结果集
<table width="899" border="1">
<tr bgcolor="#66CCFF">
<td width="52" height="41"> <div align="center" class="STYLE1">选择</div></td>
<td width="89"><div align="center"><span class="STYLE2">编号</span></div></td>
<td width="103"><div align="center"><span class="STYLE2">姓名</span></div></td>
<td width="127"><div align="center"><span class="STYLE2">登录名</span></div></td>
<td width="80"><div align="center"><span class="STYLE2">性别</span></div></td>
<td width="173"><div align="center"><span class="STYLE2">邮箱</span></div></td>
<td width="97"><div align="center"><span class="STYLE2">联系电话</span></div></td>
</tr>
<%
//如果剩下的记录数目小于pageSize,则将剩下的几个输出。如果大于pageSize,则输出pageSize个
int index=(size-(page1-1)*pageSize)<pageSize?size:(page1*pageSize);
for(int i=(page1-1)*pageSize;i<index;){
commonAdmin=list.get(i);
%>
<tr>
<td height="40"><input type="radio" name="select" value=<%=commonAdmin.getId() %> /></td>
<td>&nbsp;<%=commonAdmin.getId() %></td>
<td>&nbsp;<%=commonAdmin.getName() %></td>
<td>&nbsp;<%=commonAdmin.getCommonAdminName() %></td>
<td>&nbsp;<%=commonAdmin.getSex() %></td>
<td>&nbsp;<%=commonAdmin.getEmail() %></td>
<td>&nbsp;<%=commonAdmin.getCellphone() %></td>
</tr>
<%
i++;
}
%>
</table>
链接传递的参数:
<p align="right">当前第
<input name="textfield2" type="text" size="5" value=<%=page1 %> readonly="true"/>
页 <a href="CommonAdminDelete.jsp?page=1">首页 </a>
<a href="CommonAdminDelete.jsp?page=<%=page1-1%>">上一页</a>
<a href="CommonAdminDelete.jsp?page=<%=page1+1%>"> 下一页</a>
<a href="CommonAdminDelete.jsp?page=<%=pageCount %>">末页</a>
共<input name="total" type="text" size="5"readonly="true" value=<%=pageCount %> />页      
</p>
原文地址:https://www.cnblogs.com/moonfans/p/2697888.html