Jsp+Mysql实现简单分页

Jsp+Mysql实现简单分页

Mysql分页

Mysql实现分页使用的是limit关键字,SQL查询语句”select * from student limit start ,size;",其中start表示索引开始(Mysql数据库索引默认从0开始),size表示要得到的数据条数,而不是索引结束。这里是每次从Jsp页面发送页码页面大小交给Servlet处理然后从数据库查询数据封装到request中,然后交给Jsp进行渲染处理。
以下是数据库表"student"结构
在这里插入图片描述
数据自己插入20到30条即可。

DBUtill工具类

这里主要用于建立数据库连接和创建PrepareStatement对象,这两个方法不必关心,并且本身封装得不好,不必关心。主要关注getTotalCount用来获取"student"表中总数据条数,这个方法很重要。

StudentPaginationImpl

这是分页的核心DAO类,其中public List getStudentsPagination(int currentPage, int pageSize) 是实现分页的核心方法,会被service层调用。

QueryStudentsPaginationServlet

这是处理分页的Servlet

在这里插入代码片public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
			int currentPage =Integer.parseInt(request.getParameter("currentPage"));
			int pageSize = Integer.parseInt(request.getParameter("pageSize"));
			
			StudentPaginationService sp = new StudentPaginationServiceImpl();
			List<Student> studentlist = sp.getStudentsPagination(currentPage, pageSize);
			
			Page page = new Page();
			
			int totalCount = sp.getTotalCount();
			page.setTotalCount(totalCount);
			page.setCurrentPage(currentPage);
			page.setPageSize(pageSize);
			page.setStudents(studentlist);
		
			
			request.setAttribute("studentPage", page);
			request.getRequestDispatcher("index.jsp").forward(request, response);
				
	}

这里要注意Page类

			Page page = new Page();
			
			int totalCount = sp.getTotalCount();
			page.setTotalCount(totalCount);
			page.setCurrentPage(currentPage);
			page.setPageSize(pageSize);
			page.setStudents(studentlist);
		

因为前端会有这个东西在这里插入图片描述
就需要Page类中的数据进行辅助,Page类包括5个字段,分别是当前页数、数据总条数、分页大小、总页数和每页需要的数据。总页数就需要数据总条数和分页大小进行计算,计算放在Page类中的setter方法处理了。

//当给出总数量和页面大小,页面数量会被自动计算
this.totalPage=this.totalCount %this.pageSize==0?this.totalCount /this.pageSize:(this.totalCount /this.pageSize)+1;

执行过程

加载index.jsp时,index会判断当前页面的request中是否有pageStudent对象,没有的话会转发到
QueryStudentsPaginationServlet进行查询数据,默认是第一页数据然后重定向到index页面,呈现如下图
在这里插入图片描述
这里注意这段代码

<%
		if(pageStudent.getCurrentPage()==1) //首页显示下一页,尾页
		{%>
			
				<a href="QueryStudentsPaginaitonServlet?pageSize=10&currentPage=<%=pageStudent.getCurrentPage()+1%>">下一页</a>
				<a href="QueryStudentsPaginaitonServlet?pageSize=10&currentPage=<%=pageStudent.getTotalPage()%>">尾页</a>
	
		<%}
		 

		else if(pageStudent.getCurrentPage()==pageStudent.getTotalPage())//尾页 显示首页上一页
		{
		%>
		
			<a href="QueryStudentsPaginaitonServlet?currentPage=1&pageSize=10">首页</a>
			<a href="QueryStudentsPaginaitonServlet?pageSize=10&currentPage=<%=pageStudent.getCurrentPage()-1%>">上一页</a>
			
		<% }
		
		else{
		%>
	
		<a href="QueryStudentsPaginaitonServlet?currentPage=1pageSize=10">首页</a>
		<a href="QueryStudentsPaginaitonServlet?pageSize=10&currentPage=<%=pageStudent.getCurrentPage()-1%>">上一页</a>
		<a href="QueryStudentsPaginaitonServlet?pageSize=10&currentPage=<%=pageStudent.getCurrentPage()+1%>">下一页</a>
		<a href="QueryStudentsPaginaitonServlet?pageSize=10&currentPage=<%=pageStudent.getTotalPage()%>">尾页</a>
		<%} %>

当处在首页时,不会呈现上一页的按钮,同样处在尾页时不会呈现下一页的按钮,就需要判断一下。

相关链接

代码来自该视频教程
https://www.bilibili.com/video/BV18s411u7EH?from=search&seid=9610306124405179437&spm_id_from=333.337.0.0

完整代码

运行环境为MyEclipse,另外要修改DBUtil中的数据库连接参数
https://download.csdn.net/download/qq_43534244/45135883

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值