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+"条/页&nbsp;&nbsp;");
		if(pageNow >= 2){
			sb.append("<a href='"+url+"pageNow=1'>首页</a>&nbsp;&nbsp;");
			sb.append("<a href='"+url+"pageNow="+(pageNow-1)+"'>上一页</a>&nbsp;&nbsp;");
		}else{
			sb.append("首页&nbsp;&nbsp;上一页&nbsp;&nbsp;");
		}
		if(pageNow < pageCount && pageCount != 0){
			sb.append("<a href='"+url+"pageNow="+(pageNow+1)+"'>下一页</a>&nbsp;&nbsp;");
			sb.append("<a href='"+url+"pageNow="+pageCount+"'>尾页</a>&nbsp;&nbsp;");
		}else{
			sb.append("下一页&nbsp;&nbsp;尾页&nbsp;&nbsp;");
		}

		sb.append("跳转到第&nbsp;<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>&nbsp;页");
		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;
	}

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值