java 分页查询的实现

思路,假设数据库里的某张表的数据的条数是185条,我要实现的是一页显示10条,也就是说,展示完所有的数据需要19页,每一页的号是,1-10;11-20,22-31;

第一页是a,a+9,第二页就是(a+9)+1,((a+9)+1)+9....一直到(b+9)>185;

package cn.com.servlet;
import java.io.IOException;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import cn.com.gj.Person_info;
import cn.com.lf.JdbcUtils;
public class Personnel_definition extends HttpServlet {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
   doPost(request, response);	
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//查询数据库里面数据的总条数
		 //1.数据库里面数据的总条数;
		  int countpage=0;
		 String sql0="select * from person_info";	
		 ResultSet rs0=JdbcUtils.select(sql0, null);
		 try {
			while(rs0.next()){
				countpage++; 
			 }
		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		 //每页显示多少行
			int limt=10;
		 //2.如果一页是10条数据的话,那么就是all页
		 int all=(countpage/limt)+1;
		//这个是从前台获取的数据,是上一页还是下一页
		 int cpage=0;
		 //这个是上一页还是下一页的数据
		 String currentpage=request.getParameter("currentpage");
		 if(currentpage==null||currentpage==""){
			 cpage=1; 
		 }
		 else{
			 cpage=Integer.parseInt(currentpage);
			 //如果到了最后一页,用户再点击下一页的时候跳转到第一页
			 if(cpage==(all+1)){
				cpage=1; 
				//如果到了第一页,用户再点击下一页的时候跳转到最后一页
			 }else if(cpage==0){cpage=18;}
		 }
	 
	   //3.开始查询的数据
	    int start=limt*(cpage)-9;
	   //4.结束查询的数据
	    int end=limt*cpage;
	    
	    //这个代码是查询数据库里面的person_info,然后循环遍历显示在页面上
	    //sql语句的意思就是limit 索引,显示索引以后多少行
	    String sql="select * from person_info limit ?,?";	
	  //如果到了最后一页的时候,
		if(end>countpage){
			limt=countpage-start+1;
		}
		int sz[]={start,limt};
		ResultSet rs=JdbcUtils.selectint(sql, sz);
		ArrayList<Person_info> list=new ArrayList<Person_info>();
		
		try {
			while(rs.next()){
			//把获取的值放在pi里面,再把pi放在集合里面
				Person_info pi=new Person_info(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6));
				list.add(pi);
			}
			request.setAttribute("list", list);
				request.setAttribute("cpage", "尾页");	
			
			request.setAttribute("cpage", cpage);
			request.setAttribute("all", all);
			request.getRequestDispatcher("Personnel_definition.jsp").forward(request, response);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

猜你喜欢

转载自blog.csdn.net/qq_37591637/article/details/82951647