前几天看了有关分页技术的视频,个人觉得分页技术还是挺好实现的。
分页技术是现在大部分网站都需使用的技术,即将信息进行分页显示。
1.先讲讲分页的算法:
需定义4个变量
int pageNow------希望显示第几页
int pageSize------每页显示多少条信息
int rowCount------共有多少条记录
int pageCount-------共有几页
说明:pageSize是指定的,pageNow是用户选择的,rowCount是从表中查询到的,pageCount是计算得到的,计算式为:
if(rowCount%pageSize==0){
pageCount=rowCount/pageSize;
}else{
pageCount=rowCount/ pageSize+1;
}
2.显示一页的信息的查询方式:
select * from use3 limit "+(pageNow-1)+","+pageSize+"
3.代码示例:
封装用户登录验证方法,分页实现方法的UserBeanDao类
//得到pageCount
public int getCount(){
int pageCount=0;
ct = conn.getConnection();
try {
ps=ct.prepareStatement("select count(*) from use3");
rs=ps.executeQuery();
if(rs.next()){
pageCount=rs.getInt(1);
System.out.println("----"+pageCount);
}
} catch (SQLException e) {
e.printStackTrace();
}
this.close();
return pageCount;
}
public ArrayList getUser(int pageNow,int pageSize){
ArrayList<User> al = new ArrayList<User>();
try {
ct = conn.getConnection();
ps=ct.prepareStatement("select * from use3 limit "+(pageNow-1)+","+pageSize+"");
// //给?赋值
// ps.setInt(1, pageSize);
// ps.setInt(2, pageSize*(pageNow-1));
rs=ps.executeQuery();
while(rs.next()){
System.out.println(rs.getString(1));
User user = new User();
user.setId(Integer.parseInt(rs.getString(1)));
user.setUsername(rs.getString(2));
user.setPwd(rs.getString(3));
user.setEmail(rs.getString(4));
user.setGrade(Integer.parseInt(rs.getString(5)));
al.add(user);
}
} catch (Exception e) {
e.printStackTrace();
}
this.close();
return al;
}
servlet实现类UserManage
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String action = request.getParameter("action");
//String action = new String(str.getBytes("ISO-8859-1"),"gbk");
System.out.println(action);
if("login".equals(action)){
System.out.println("-----");
UserBeanDao ub = new UserBeanDao();
String username = request.getParameter("username");
String pwd = request.getParameter("pwd");
if(ub.validate(username, pwd)){
//cookie保存用户信息
String keep = request.getParameter("keep");
if(keep!=null){
//将用户名和密码保存到客户端(cookie)
//创建
Cookie name = new Cookie("myname",username );
Cookie userpwd = new Cookie("mypwd", pwd);
//设置时间
name.setMaxAge(14*24*3600);
userpwd.setMaxAge(14*24*3600);
//回写到客户端
response.addCookie(name);
response.addCookie(userpwd);
}
request.getSession().setAttribute("username", username);
request.getSession().setAttribute("pwd", pwd);
rowCount = ub.getCount();
//计算pageCount
if(rowCount%pageSize==0){
pageCount=rowCount/pageSize;
}else{
pageCount=rowCount/ pageSize+1;
}
request.setAttribute("pageNow", pageNow);
request.setAttribute("pageCount", pageCount);
ArrayList<User> al = ub.getUser(pageNow, pageSize);
request.setAttribute("fenye", al);
request.getRequestDispatcher("/welcomeUser.jsp").forward(request, response);
}else{
request.setAttribute("errorMsg", "账号或密码错误!");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
}else if("fenye".equals(action)){
UserBeanDao ub = new UserBeanDao();
//request.setAttribute("username", username);
//request.setAttribute("pwd", pwd);
pageNow = Integer.parseInt(request.getParameter("pageNow").toString());
rowCount = ub.getCount();
//计算pageCount
if(rowCount%pageSize==0){
pageCount=rowCount/pageSize;
}else{
pageCount=rowCount/ pageSize+1;
}
request.setAttribute("pageNow", pageNow);
request.setAttribute("pageCount", pageCount);
ArrayList al = ub.getUser(pageNow, pageSize);
request.setAttribute("fenye", al);
request.getRequestDispatcher("/welcomeUser.jsp").forward(request, response);
}
}
登录后的显示界面welcomeUser.jsp
<%@ page language="java" import="java.util.*,test.blog.form.*" contentType="text/html; charset=gbk"
pageEncoding="gbk"%>
<%
String username = session.getAttribute("username").toString();
String pwd = session.getAttribute("pwd").toString();
int pageCount = Integer.parseInt(request.getAttribute("pageCount").toString());
int pageNow = Integer.parseInt(request.getAttribute("pageNow").toString());
ArrayList al = (ArrayList)request.getAttribute("fenye");
%>
<!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=gbk">
<title>Insert title here</title>
</head>
<body>
<b><%=username %></b>
<table border="1px">
<%
for(int i=0;i<al.size();i++){
User user = (User)al.get(i);
%>
<tr>
<td><%=user.getId() %></td>
<td><%=user.getUsername() %></td>
<td><%=user.getPwd() %></td>
<td><%=user.getEmail() %></td>
<td><%=user.getGrade() %></td>
</tr>
<%
}
%>
</table>
<br>
<%
for(int i=1;i<pageCount;i++){
%>
<a href="UserManage?action=fenye&pageNow=<%=i %>"><%=i %> </a>
<%
}%>
</body>
</html>