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

在这里插入图片描述

✅✅作者主页:🔗孙不坚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 {
	@Override
	protected 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);
	}

	@Override
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

jsp Main.jsp








    
    <link rel="stylesheet" type="text/css" href="/css/style.css"/>
    <link rel="stylesheet" type="text/css" href="/css/common.css"/>



    
    

学生列表

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

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

本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://www.net2asp.com/01cd3190f1.html