在web开发过程中,不可避免的需要使用到分页的功能,jsp分页一般有真分页和假分页。例如mysql:真分页意思就是用limit查询语句从后台检索出结果集传回jsp页面显示。而假分页则是后台传回所有数据的list集合或者结果集,利用js或者游标等进行分页。(假分页一定程度上给服务器运行增加了压力)
下面示例是 利用后台保存到session的一个list集合进行假分页的案例
<%@ page language="java" import="java.util.*,com.entity.*;" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<%
List<User> data=(List<User>)session.getAttribute("user");
int totalNum=data.size();
int pageSize=1;
int currentPage=1;
String num=request.getParameter("page");
if(num!=null){
currentPage=Integer.parseInt(num);
}
if(currentPage<1){
currentPage=1;
}
int totalPage=totalNum/pageSize;
if(totalNum%pageSize!=0){
totalPage++;
}
if(currentPage>totalPage){
currentPage=totalPage;
}
int startNum=(currentPage-1)*pageSize;
int endNum=currentPage*pageSize-1;
if(endNum>=data.size()){
endNum=data.size()-1;
}
%>
<table>
<tr>
<td>firstName</td><td>lastName</td><td>email</td><td></td><td></td>
</tr>
<%for(int i=startNum;i<=endNum;i++){%>
<%
User p=(User)data.get(i);
%>
<tr>
<td><%=p.getFirstName()%></td>
<td><%=p.getLastName()%></td>
<td><%=p.getEmail()%></td>
<td></td>
<td></td>
</tr>
<%}%>
<tr>
<td>当前页:<%=currentPage%>/总共页:<%=totalPage%></td>
<td><a href="user/JSP假分页.jsp?page=1">首页</a></td>
<td><a href="user/JSP假分页.jsp?page=<%=currentPage-1%>">上一页</a></td>
<td><a href="user/JSP假分页.jsp?page=<%=currentPage+1%>">下一页</a></td>
<td><a href="user/JSP假分页.jsp?page=<%=totalPage%>">尾页</a><br/></td>
</tr>
</table>
</body>
</html>
下面示例是 利用后台保存到session的一个list集合进行假分页的案例
<%@ page language="java" import="java.util.*,com.entity.*;" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<%
List<User> data=(List<User>)session.getAttribute("user");
int totalNum=data.size();
int pageSize=1;
int currentPage=1;
String num=request.getParameter("page");
if(num!=null){
currentPage=Integer.parseInt(num);
}
if(currentPage<1){
currentPage=1;
}
int totalPage=totalNum/pageSize;
if(totalNum%pageSize!=0){
totalPage++;
}
if(currentPage>totalPage){
currentPage=totalPage;
}
int startNum=(currentPage-1)*pageSize;
int endNum=currentPage*pageSize-1;
if(endNum>=data.size()){
endNum=data.size()-1;
}
%>
<table>
<tr>
<td>firstName</td><td>lastName</td><td>email</td><td></td><td></td>
</tr>
<%for(int i=startNum;i<=endNum;i++){%>
<%
User p=(User)data.get(i);
%>
<tr>
<td><%=p.getFirstName()%></td>
<td><%=p.getLastName()%></td>
<td><%=p.getEmail()%></td>
<td></td>
<td></td>
</tr>
<%}%>
<tr>
<td>当前页:<%=currentPage%>/总共页:<%=totalPage%></td>
<td><a href="user/JSP假分页.jsp?page=1">首页</a></td>
<td><a href="user/JSP假分页.jsp?page=<%=currentPage-1%>">上一页</a></td>
<td><a href="user/JSP假分页.jsp?page=<%=currentPage+1%>">下一页</a></td>
<td><a href="user/JSP假分页.jsp?page=<%=totalPage%>">尾页</a><br/></td>
</tr>
</table>
</body>
</html>