JavaWeb案例 —— 后台分页查询效果
实现效果
第一步:创建分页JavaBean
package mvc.model;
import java.util.List;
public class PageModel{
private int recordCount; //记录总数
private int pageSize = 3; //每页显示的记录数
private int pageCount; //分页总数
private int pageNow = 1; //当前页数
private String pageNav; //翻页导航的HTML实现
//初始构造方法 记录总数、当前页面
public PageModel(int recordCount,int pageNow){
//初始化数据总数
this.recordCount = recordCount;
//初始化分页总数
this.pageCount = (int) Math.ceil(recordCount / (pageSize*1.0));
//初始化当前页数
if(pageNow < 1){
this.pageNow = 1;
}else if(pageNow > this.pageCount){
this.pageCount = recordCount;
}else{
this.pageNow = pageNow;
}
}
// GET AND SET 方法
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPageNow() {
return pageNow;
}
public void setPageNow(int pageNow) {
this.pageNow = pageNow;
}
public int getRecordCount() {
return recordCount;
}
public void setRecordCount(int recordCount) {
this.recordCount = recordCount;
}
public int getPageCount() {
return pageCount;
}
public void setPageCount(int pageCount) {
this.pageCount = pageCount;
}
public String getPageNav() {
return pageNav;
}
//定义翻页导航生成方法
public void setPageNav(String url) {
if(url.lastIndexOf("?") != -1){
url += '&';
}else{
url += "?";
}
StringBuilder sb = new StringBuilder();
sb.append("共"+recordCount+"条数据, "+pageSize+"条/页 ");
if(pageNow >= 2){
sb.append("<a href='"+url+"pageNow=1'>首页</a> ");
sb.append("<a href='"+url+"pageNow="+(pageNow-1)+"'>上一页</a> ");
}else{
sb.append("首页 上一页 ");
}
if(pageNow < pageCount && pageCount != 0){
sb.append("<a href='"+url+"pageNow="+(pageNow+1)+"'>下一页</a> ");
sb.append("<a href='"+url+"pageNow="+pageCount+"'>尾页</a> ");
}else{
sb.append("下一页 尾页 ");
}
sb.append("跳转到第 <select>");
for(int i=1;i<=pageCount;i++){
if(pageNow != i){
sb.append("<option onclick=\"location.href='"+url+"pageNow="+i+"';\">"+i+"/"+pageCount+"</option>");
}else{
sb.append("<option selected='selected'>"+i+"/"+pageCount+"</option>");
}
}
sb.append("</select> 页");
this.pageNav = sb.toString();
System.out.println(this.pageNav);
}
}
第二步:创建Servlet处理类
package mvc.service;
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 mvc.dao.impl.UserDaoImpl;
import mvc.model.PageModel;
@WebServlet("/PageServlet")
public class PageServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8"); //设置请求报文中的编码方式(放在提取前)
response.setContentType("text/html;charset=utf-8"); //设置响应报文中的编码方式(放在输出前)
int pageNow;
try{
if(request.getParameter("pageNow") == null){
pageNow = 1;
}else{
pageNow = Integer.parseInt(request.getParameter("pageNow"));
}
}catch(NumberFormatException e){
pageNow = 1;
}
//连接数据库获取数据
UserDaoImpl udi = new UserDaoImpl();
List users = udi.show(pageNow);
PageModel pm = new PageModel(udi.total(),pageNow);
pm.setPageNav(request.getRequestURI());
request.setAttribute("users",users); //将分页对象添加到request域中
request.setAttribute("pm",pm); //将分页对象添加到request域中
request.getRequestDispatcher("/page.jsp").forward(request, response);
}
}
第三步:连接数据库获取总数据数和当前用户集合
public int total(){
String sql = "select * from users";
con = super.getConnection();
int row =1;
try{
ps = con.prepareStatement(sql);
rs = ps.executeQuery(sql);
rs.last();
row = rs.getRow();
}catch(Exception e) {
throw new RuntimeException(e);
}finally{
super.closeAll(rs, ps, con);
}
return row;
}
public List<User> show(int pageNow){
List<User> list = new ArrayList<User>();
String sql = "select * from users limit "+((pageNow-1)*3)+",3";
con = super.getConnection();
try{
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()){
User user = new User();
user.setId(rs.getInt("id"));
user.setName(rs.getString("name"));
user.setSex(rs.getInt("sex"));
user.setAge(rs.getInt("age"));
user.setPhone(rs.getLong("phone"));
user.setQq(rs.getInt("qq"));
user.setEmail(rs.getString("email"));
list.add(user);
}
}catch(Exception e) {
throw new RuntimeException(e);
}finally{
super.closeAll(rs, ps, con);
}
return list;
}