我的编程空间,编程开发者的网络收藏夹
学习永远不晚

【JavaWeb】手写一个Servlet+JSP+JavaBean分页

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

【JavaWeb】手写一个Servlet+JSP+JavaBean分页

在这里插入图片描述

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

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

手写分页总结

运行环境: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;public class PageBean<T> {    private Integer currentPage; // 当前页数    private Integer totalPage; // 总页数    private Integer totalSize; // 总记录数    private Integer pageSize; // 每页记录数    private List<T> 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<T> getList() {        return list;    }    public void setList(List<T> 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<UserBean> queryAllByLimit(int offset, int limit) throws SQLException {        Connection conn = null;        PreparedStatement ps = null;        ResultSet rs = null;        List<UserBean> users=new ArrayList<UserBean>();        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<UserBean> 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<UserBean> 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<UserBean> 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" %>        

来源地址:https://blog.csdn.net/qq_51808107/article/details/127927785

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

【JavaWeb】手写一个Servlet+JSP+JavaBean分页

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录