要实现分页,必须知道 某一页的 数据从哪里开始 到哪里结束
第n页的数据: 第(n-1)*10+1 --- 第n*10条
MYSQL:从0开始计数
0 0 9
1 10 19
2 20 29
n (n-1)*10 n*10-1
MYSQL实现分页的sql:
limit 开始, 多少条
第0页;
select * from student limit 0, 10;
第1页:
select * from student limit 10, 10;
第n页:
select * from student limit 页数*页面大小,页面大小
oracle:从1开始计数
0 1 10
1 11 20
2 21 30
n (n-1)*10+1 n*10
表示层后端:(byUserByPage.java)
分页实现:
5个变量(属性)
1.数据总数 查数据库( select count(*)..
2.页面大小(每页显示的数据条数) (用户自定义)
3.总页数 (程序自动计算)
总页数 = 数据总数%页面大小 == 0? 数据总数/页面大小 : 数据总数/页面大小+1
4.当前页(页码) (用户自定义)
5.当前页的对象集合(实体类集合) (查数据库,分页sql)
package servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import ServiceImpl.userDaoImpl;
import entity.user;
@WebServlet("/getUserByPage")
public class getUserByPage extends HttpServlet {
private static final long serialVersionUID = 1L;
public getUserByPage() {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int default_index = 0;
int default_size = 10;
//没有参数时使用默认值
default_index = request.getParameter("uindex") != null? Integer.parseInt(request.getParameter("uindex")):default_index;
default_size = request.getParameter("usize") != null? Integer.parseInt(request.getParameter("usize")):default_size;
int count = new userDaoImpl().count();
List<user> result = new userDaoImpl().getDataByPage(default_index, default_size);
request.setAttribute("ucount", count);
request.setAttribute("uresult", result);
request.getRequestDispatcher("main.jsp").forward(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
表示层前端:main.jsp
<%@page import="DaoImpl.DbDaoimpl"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "java.sql.*" %>
<%@ page import = "java.util.List" %>
<%@ page import = "entity.user" %>
<!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>
</head>
<body>
<%
if(request.getAttribute("error")!=null){
out.print("<script type='text/javascript'>alert('添加失败!');</script>");
}else if(request.getAttribute("good")!=null){
out.print("<script type='text/javascript'>alert('添加成功!');</script>");
}else if(request.getAttribute("errorset")!=null){
out.print("<script type='text/javascript'>alert('修改失败!');</script>");
}else if(request.getAttribute("goodset")!=null){
out.print("<script type='text/javascript'>alert('修改成功!');</script>");
}
%>
//onsubmit: return true 表单正常提交,false表单终止
<form action="addData" method = "Post" onsubmit="return check()">
姓名:<input type = "text" name = "uname" id = "name"><br/>
年龄:<input type = "text" name = "uage" id = "age"><br/>
地址:<input type = "text" name = "uloc" id = "loc">
<input type ="submit" value = "添加" ><br/>
</form>
<br/><br/><br/>
<table border = "1px">
<tr>
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
<th>地址</th>
<th>操作</th>
<th>操作</th>
</tr>
<%
response.setCharacterEncoding("UTF-8");
int count = (int)request.getAttribute("ucount");
List<user> list = (List<user>)request.getAttribute("uresult");
String index_S = request.getParameter("uindex");
if(index_S == null){
index_S = "0";
}
int index = Integer.parseInt(index_S);
int max_index = count/10;
if(list!=null){
for(user user : list){
%>
<tr>
<td><%= user.getId() %></td>
<td><%= user.getName() %></td>
<td><%= user.getAge() %></td>
<td><%= user.getLoc() %></td>
<th><a href = "delData?uname=<%=user.getName()%>&uindex=<%=index%>" >删除</a></th>
<th><a href = "set.jsp?uname=<%=user.getName()%>&uindex=<%=index%>" >修改</a>
</tr>
<%
}
}
out.print("查到:"+count+"条数据"+ ",共"+(max_index +1)+"页");
%>
</table>
<%
if(index != 0){
out.print("<a href = 'getUserByPage?uindex=0'>首页</a> ");
out.print("<a href = 'getUserByPage?uindex="+ ((index-1)<0?0:index-1) +"'>上一页</a> ");
}
out.print("< "+(index+1)+" >");
if(index != max_index){
out.print("<a href = 'getUserByPage?uindex="+ ((index+1>max_index)?max_index:index+1) + "'>下一页</a> ");
out.print("<a href = 'getUserByPage?uindex="+max_index +"'>尾页</a>");
}
%>
</body>
</html>
set.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import = "DaoImpl.DbDaoimpl" %>
<%@ page import = "java.sql.*" %>
<!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>
</head>
<body>
<%
String sql = "SELECT id,name,age,loc FROM user WHERE name = ?";
ResultSet result = new DbDaoimpl().Select(sql, request.getParameter("uname"));
if(result.next()){
String id = result.getString(1);
String name = result.getString(2);
String age = result.getString(3);
String loc = result.getString(4);
String index = request.getParameter("uindex");
%>
<form action="setData" method ="Post">
编号:<input type = "text" name = "uid" value = "<%=id%>" readonly="readonly"><br/>
姓名:<input type = "text" name = "uname" value = "<%=name%>"><br/>
年龄:<input type = "text" name = "uage" value = "<%=age%>"><br/>
地址:<input type = "text" name = "uloc" value = "<%=loc%>">
<input type="hidden" name = "uindex" value = "<%=index%>">
<input type ="submit" value = "修改">
</form>
<%
}
%>
</body>
</html>