【JavaWeb】手写一个Servlet+JSP+JavaBean分页
创始人
2024-01-30 16:05:25
0

在这里插入图片描述

✅✅作者主页:🔗孙不坚1208的博客
🔥🔥精选专栏:🔗JavaWeb从入门到精通(持续更新中)
📋📋 本文摘要:本篇文章主要分享如何使用Servlet+JSP+JavaBean写一个分页。

💞💞觉得文章还不错的话欢迎大家点赞👍➕收藏⭐️➕评论💬支持博主🤞
👉 👉你的一键三连是我更新的最大动力❤️❤️

手写分页总结

      • 一、分页技术
        • 1、前端分页
        • 2、后端分页
      • 二、实现分页
        • 1、准备工作
        • 2、效果图
        • 3、核心代码

运行环境:tomcat8.0+idea

技术:servlet+jsp+javabean+mysql

一、分页技术

1、前端分页

前端分页:一次性从数据库读出表的所有数据一次性的返回给客户端,由前端js来控制每一页的显示,由于一次性读出所有数据并返回给客户端,如果数据量庞大,这一次的动作可能是非常消耗服务器资源和带宽的,但是返回给客户端以后就非常轻松了,客户端在一段时间内不会再像服务器端请求资源。

2、后端分页

本文分页是后端分页实现的一种。

后端分页:由后端程序控制,每一次只返回一页大小的数据,返回并显示到客户端,优点的话就是减少单次查询数据库的时间,后端分页的方法需要频繁和服务器端进行交互,因为频繁交互,所以会给服务器带来负担。

二、实现分页

1、准备工作

在制作分页之前,首先需要了解,分页的属性有哪些?

  • 当前页数 currentPage
  • 总页数 totalPage
  • 总记录数 totalSize
  • 每页记录数 pageSize
  • 当前页数据 pageList
  • 等等…

我们可以将这些属性变成一个JavaBean中的属性来调用,并且实现一些分页相关的业务逻辑。

封装关于页数的数据:

请求数据: 当前页数 currentPage

响应数据: PageBean 类封装(包含上面我们说过的属性)

总页数 = (总记录数 % 每页记录数 == 0) ? (总记录数 / 每页记录数) : (总记录数 / 每页记录数 + 1);

当前页数据 list = query( select * from limit 每页记录数*(当前页数-1), 每页记录数 );

2、效果图

image-20221118182545962

3、核心代码

bean PageBean.java

package com.sun.bean;import com.sun.util.DBConnection;
import com.sun.util.Date_String;import java.sql.*;
import java.util.ArrayList;
import java.util.List;/*** @author JumperSun* @date 2022-11-15-8:31*/
public class PageBean {private Integer currentPage; // 当前页数private Integer totalPage; // 总页数private Integer totalSize; // 总记录数private Integer pageSize; // 每页记录数private List list; // 当前页数据 public Integer getCurrentPage() {return currentPage;}public void setCurrentPage(Integer currentPage) {this.currentPage = currentPage;}public Integer getTotalPage() {return totalPage;}public void setTotalPage(Integer totalPage) {this.totalPage = totalPage;}public Integer getTotalSize() {return totalSize;}public void setTotalSize(Integer totalSize) {this.totalSize = totalSize;}public Integer getPageSize() {return pageSize;}public void setPageSize(Integer pageSize) {this.pageSize = pageSize;}public List getList() {return list;}public void setList(List list) {this.list = list;}// 分页总数public int size()throws SQLException {Connection conn = null;Statement st = null;ResultSet rs = null;try {conn = DBConnection.getConnection();String sql = "select count(*) from user";st = conn.createStatement();rs = st.executeQuery(sql);if(rs.next()) {return rs.getInt(1);}} finally {DBConnection.close(rs, st, conn);}return 0;}// 分页查询数据public List queryAllByLimit(int offset, int limit) throws SQLException {Connection conn = null;PreparedStatement ps = null;ResultSet rs = null;List users=new ArrayList();try {conn = DBConnection.getConnection();String sql = "select * from user limit " + offset + "," + limit;ps = conn.prepareStatement(sql);rs = ps.executeQuery();while(rs.next()==true){UserBean tmp=new UserBean();tmp.setUserid(rs.getInt("id"));tmp.setUsername(rs.getString("name"));tmp.setPassword(rs.getString("password"));tmp.setSex(rs.getString("sex"));tmp.setAge(rs.getInt("age"));String birthday= Date_String.getStringDate1(rs.getDate("birthday"));tmp.setBirthday(birthday);users.add(tmp);}} finally {DBConnection.close(rs, ps, conn);}return users;}// 分页查询处理public void selectUserListByPage(Integer currentPage, PageBean pageBean) throws SQLException {// 当前页数pageBean.setCurrentPage(currentPage);// 总记录数Integer totalSize = pageBean.size();pageBean.setTotalSize(totalSize);// 每页记录数Integer pageSize = 3;pageBean.setPageSize(pageSize);// 总页数(没余数为整页,有余数页数+1)Integer totalPages = null;if (totalSize != null) {totalPages = (totalSize%pageSize==0) ? (totalSize/pageSize) : (totalSize/pageSize+1);}if(totalPages != null) {pageBean.setTotalPage(totalPages);}// 当前页数据List list = queryAllByLimit(pageSize*(currentPage-1), pageSize);pageBean.setList(list);}
}

Servlet GetUserListByPage.java

package com.sun.servlet;import java.io.IOException;
import java.sql.SQLException;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 com.sun.bean.PageBean;
import com.sun.bean.UserBean;@WebServlet("/getUserListByPage")
public class GetUserListByPage extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String currentPageStr = request.getParameter("currentPage");Integer currentPageNum = getCurrentPage(currentPageStr);PageBean pageBean = new PageBean<>();try {pageBean.selectUserListByPage(currentPageNum,pageBean);} catch (SQLException e) {e.printStackTrace();}request.setAttribute("pageBean", pageBean);request.getRequestDispatcher("/Main.jsp").forward(request,response);}private Integer getCurrentPage(String currentPagestr) {if (null == currentPagestr) {currentPagestr = "1";}return Integer.valueOf(currentPagestr);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}}

jsp Main.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8" errorPage="../error.jsp" %>
<%@ page import="java.util.List" %>
<%@ page import="com.sun.bean.UserBean" %>
<%@ page import="com.sun.bean.PageBean" %>


/css/style.css"/>/css/common.css"/>


学生列表

学生名:  性别:
学生id学生名密码性别年龄出生日期操作
${user.getUserid()}${user.getUsername()}${user.getPassword()}${user.getSex()}${user.getAge()}${user.getBirthday()}修改    删除
第${pageBean.currentPage}/${pageBean.totalPage}页总记录数:${pageBean.totalSize}条每页${pageBean.pageSize}条[首页][上一页][下一页][尾页]

此致,一个分页就写完了。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...