如何使用Servlet实现Java分页

Java分页

首先说一下什么是分页:分页就是将所有数据分开展示给用户的技术,通俗点说就像大家的书一样,我们可以通过页数来找到自己想要的内容,Java分页也是如此。

Java分页的意义

分页确实有效,但它一定会加大系统的复杂度,但可否不分页呢?如果学习的话当然可以.,因为数据库的数据比较少;但是对于企业信息系统来说数据量不会限制在一个小范围内,利用分页可以高效的,找到数据,并且减轻对服务器的压力。

如何实现分页

首先我们需要一个工具类Page.Java来做辅助,通过封装来限制每页的数据量,总数据量,和每页的页码,最后保存到list集合中,进行读取。

public class Page {
	//总页数
	private int totalPageCount = 0;
	//每页显示记录数
	private int pageSize = 3;
	//当前总数
	private int totalCount;
	//当前页码
	private int currPageNo = 1;
	//每页的集合
	private List studentList;
	public int getTotalPageCount() {
		return totalPageCount;
	}
	public void setTotalPageCount(int totalPageCount) {
		this.totalPageCount = totalPageCount;
	}
	public int getPageSize() {
		return pageSize;
	}
	public void setPageSize(int pageSize) {
		if(pageSize>0)
			this.pageSize = pageSize;
	}
	public int getTotalCount() {
		return totalCount;
	}
	public void setTotalCount(int totalCount) {
		if(totalCount>0)
			this.totalCount = totalCount;
			//计算总页数
			totalPageCount=this.totalCount%pageSize==0?(this.totalCount/pageSize):(this.totalCount/pageSize+1);
	}
	public int getCurrPageNo() {
		if(totalPageCount==0)
			return 0;
		return currPageNo;
	}
	public void setCurrPageNo(int currPageNo) {
		if(currPageNo>0)
			this.currPageNo = currPageNo;
	}
	public List getStudentList() {
		return studentList;
	}
	public void setStudentList(List studentList) {
		this.studentList = studentList;
	}

}

我们在这里需要自己搭三层
然后我们来到Servlet页面

package cn.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.alibaba.fastjson.JSON;

import cn.dao.StudentDao;
import cn.dao.impl.StudentDaoImpl;
import cn.entity.Page;
import cn.entity.Student;

public class ShowServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
		throws ServletException, IOException {

	response.setContentType("text/html;charset=utf-8");
	//从页面接受页码
	String  strNum=request.getParameter("no");
	int no=1;
	if(strNum==null || strNum==""){			
	}else{
		no=Integer.parseInt(strNum);
	}

	StudentDao dao = new StudentDaoImpl();
	//总数量   从数据库里面查出来的
	int totalCount = dao.getTotalCount();
	
	Page p = new Page();
	//当前页面
	p.setCurrPageNo(no);
	//当前总数
	p.setTotalCount(totalCount);
	//查询当前页面的   limit ?,?
	List list = dao.getPageList(p.getCurrPageNo(), p.getPageSize());
	//赋给page里面的List
	p.setStudentList(list);
	request.setAttribute("list", p.getStudentList());
	request.setAttribute("count", p.getTotalPageCount());
	//当前页码
	request.setAttribute("no",p.getCurrPageNo());
	request.getRequestDispatcher("show.jsp").forward(request, response);
	
	
	
	/*out.print("新闻总数量:"+p.getTotalCount()+"
"); out.print("每条数量是"+p.getPageSize()+"
"); out.print("总页数"+p.getTotalPageCount()+"
"); out.print("当前是第"+p.getCurrPageNo()+"页
"); List list = dao.getPageList(p.getCurrPageNo(), p.getPageSize()); p.setStudentList(list); String json = JSON.toJSONString(p.getStudentList()); out.print(json);*/ } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }

最后来到Show.jsp页面

<%@ page language=“java” import=“java.util.*” pageEncoding=“utf-8”%>
<%@ taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c” %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"/"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

My JSP 'show.jsp' starting page

		
编号 姓名 密码
${item.id } ${item.name } ${item.pwd }
上一页 下一页 首页 尾页

关于数据库,我们使用的是Mysql。表中有三个属性:编号,姓名,密码
然后加几条测试数据,给大家发一下我的效果图
如何使用Servlet实现Java分页_第1张图片
Tomcat我用的是7.x,其他版本没有试过,如果过程中有什么不懂的可以加我微信号:lxl1052681394
或者扫下面二维码

你可能感兴趣的:(如何使用Servlet实现Java分页)