JavaWeb分页的实现代码实例

这篇文章主要介绍了JavaWeb分页的实现代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

分页的分类

分页的实现分为真分页和假分页两种。

1.真分页(物理分页):

实现原理: SELECT * FROM xxx [WHERE...] LIMIT ?, 10;

第一个参数是开始数据的索引位置

10是要查询多少条数据,即每页显示的条数

优点: 不会造成内存溢出

缺点: 翻页的速度比较慢

2.假分页(逻辑分页):

实现原理: 一次性将所有的数据查询出来放在内存之中,每次需要查询的时候就直接从内存之中去取出相应索引区间的数据

优点: 分页的速度比较快

缺点: 可能造成内存溢出

分页的一些术语:

  • -- 数据总条数: totalCount : select count(1) from t_user;
  • -- 每页显示条数:pageSize
  • -- 总页数:totalPage
  • -- 当前页:currPage
  • -- 起始索引: startIndex

-- 通过当前页码查询第几页的数据

select * from t_user limit 0, 5; -- 页码 1
select * from t_user limit 5, 5; -- 页码 2
select * from t_user limit 10, 5; -- 页码 3

-- 公式:startIndex = (currPage - 1) * pageSize

-- 计算一共有多少页

-- 方法一:result = totalCount%pageSize,如果余数result为0,

-- totalPage = totalCount / pageSize

-- 如果余数result不为0,

-- totalPage = totalCount / pageSize + 1;

-- 方法二:totalPage = (totalCount + pageSize - 1) / pageSize

Pageing工具类

public class PaginationBean<T> {

  private List<T> dataList;

  private int currPage;

  private int totalPage;

  public List<T> getDataList() {
    return dataList;
  }

  public void setDataList(List<T> dataList) {
    this.dataList = dataList;
  }

  public int getCurrPage() {
    return currPage;
  }

  public void setCurrPage(int currPage) {
    this.currPage = currPage;
  }

  public int getTotalPage() {
    return totalPage;
  }

  public void setTotalPage(int totalPage) {
    this.totalPage = totalPage;
  }
}

Servlet

@WebServlet("/showUserList")
public class ShowUserListServlet extends HttpServlet implements Servlet {

  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("UTF-8");
    String operation = request.getParameter("operation");
    String currPageStr = request.getParameter("currPage");
    int currPage = 0;

    IUserService userSevice = new UserServiceImpl();
    int totalPage = userSevice.getTotalPage();

    if ("首页".equals(operation) || operation == null || currPageStr == null || currPageStr.length() == 0) {

      currPage = 1;
    } else if ("上一页".equals(operation)) {

      currPage = Integer.parseInt(currPageStr) - 1;
      if (currPage <= 0) {
        currPage = 1;
      }
    } else if ("下一页".equals(operation)) {

      currPage = Integer.parseInt(currPageStr) + 1;
      if (currPage >= totalPage) {
        currPage = totalPage;
      }
    } else {

      currPage = totalPage;
    }

    List<TestUserBean> userList = userSevice.getUserListByCurrPage(currPage);

    PaginationBean<TestUserBean> pageBean = new PaginationBean<TestUserBean>();
    pageBean.setDataList(userList);
    pageBean.setCurrPage(currPage);
    pageBean.setTotalPage(totalPage);

    request.setAttribute("page", pageBean);

    request.getRequestDispatcher("/userList.jsp").forward(request, response);
  }

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

}

jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>
<%-- 引入JSTL --%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<style>
  table {
    border-collapse: collapse;
  }
</style>
</head>
<body>
  <table border="1">
    <tr>
      <th>ID</th>
      <th>姓名</th>
      <th>密码</th>
      <th>身份证号</th>
    </tr>
    <c:forEach items="${page.dataList }" var="user">
      <tr>
        <td>${user.id }</td>
        <td>${user.name }</td>
        <td>${user.pwd }</td>
        <td>${user.idCard }</td>
      </tr>
    </c:forEach>
  </table>
  <span>第${page.currPage }页/共${page.totalPage }页</span>
  <br>
  <br>
  <form action="showUserList" method="get">
    <input type="submit" name="operation" value="首页">
    <input type="submit" name="operation" value="上一页">
    <input type="submit" name="operation" value="下一页">
    <input type="submit" name="operation" value="尾页">

    <input type="hidden" name="currPage" value="${page.currPage }">
  </form>
</body>
</html>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • JavaWeb中的简单分页完整代码(推荐)

    这次主要是讲解一下通过登录后对得到的数据进行分页,首先我们新建一个登录页面login.jsp,因为我们主要学习一下分页,所以登录验证的部分不再阐述,主要代码如下: <form action="pageServlet"> 用户名:<input type="text" name="username"><br> 密 码:<input type="text" name="passwo

  • Java web velocity分页宏示例

    复制代码 代码如下: #macro(pager $url $pager)<ul class="pagination"> #set($FRONT_LEN = 4) #set($BEHIND_LEN = 5) #set($PAGER_LEN = 10) #set($PAGER_CENTER = $!{pager.pageNum} - $!{BEHIND_LEN}) <li #if($!{pager.currentPage} == 1) class="disabl

  • java web实现分页查询实例方法

    Javaweb分页技术实现 分页技术就是通过SQL语句(如下)来获取数据,具体实现看下面代码 //分页查询语句 select * from 表名 where limit page , count; 和 //获取表中的总数据,确定页数 select count(*) from 表名; 不说废话直接上代码 前端代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title&

  • JavaWeb 简单分页实现代码

    JavaWeb 简单分页的实现: 这次主要是讲解一下通过登录后对得到的数据进行分页,首先我们新建一个登录页面login.jsp,因为我们主要学习一下分页,所以登录验证的部分不再阐述,主要代码如下: <form action="pageServlet"> 用户名:<input type="text" name="username"><br> 密 码:<input type="text"

  • javaweb分页原理详解

    本文实例为大家分享了javaweb分页原理的具体实现代码,供大家参考,具体内容如下 public class Page { private int currentPage; private int totalPage; private int count; private int PageSize; private List<Product> list; private String category; } servlet: package com.learning.web.servlet;

  • 举例详解用Java实现web分页功能的方法

    分页问题是一个非常普遍的问题,开发者几乎都会遇到,这里不讨论具体如何分页,说明一下Web方式下分页的原理.首先是查询获得一个结果集(表现为查询数据库获得的结果),如果结果比较多我们一般都不会一下显示所有的数据,那么就会用分页的方式来显示某些数据(比如20条).因为Http的无状态性,每一次提交都是当作一个新的请求来处理,即使是换页,上一次的结果对下一次是没有影响的. 这里总结三种实现分页的方式,不知道还有没有别的! 1.每次取查询结果的所有数据,然后根据页码显示指定的纪录. 2.根据页面只取一页

  • Java Web中常用的分页组件(Java端实现)

     前言 好久没写Web程序了,这一段时间看了看原来师弟们做的一些程序,感觉还是有很多不足,一个比较典型的例子就是分页查询的实现,正好借着这个机会简单记录一下. 分析 使用场景 "分页"在Web程序里非常常见,比如我们在页面上经常要展示一些列表信息,通常情况下,如果数据过多,我们在一屏上难以罗列出所有的记录,而且很多时候我们可能只是看看比较Top的一些记录,因此,在这种情况下使用"分页"查询只展示部分数据是比较合适的. 实现原理 从数据库角度上来说,分页查询实现的难度

  • Java Web 简单的分页显示实例代码

    本文通过两个方法:(1)计算总的页数. (2)查询指定页数据,实现简单的分页效果. 思路:首先得在 DAO 对象中提供分页查询的方法,在控制层调用该方法查到指定页的数据,在表示层通过 EL 表达式和 JSTL 将该页数据显示出来. 先给大家展示下效果图: 题外话:该分页显示是用 "表示层-控制层-DAO层-数据库"的设计思想实现的,有什么需要改进的地方大家提出来,共同学习进步.废话不多说了,开始进入主题,详细步骤如下所示: 1.DAO层-数据库 JDBCUtils 类用于打开和关闭数据

  • JavaWeb分页的实现代码实例

    这篇文章主要介绍了JavaWeb分页的实现代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 分页的分类 分页的实现分为真分页和假分页两种. 1.真分页(物理分页): 实现原理: SELECT * FROM xxx [WHERE...] LIMIT ?, 10; 第一个参数是开始数据的索引位置 10是要查询多少条数据,即每页显示的条数 优点: 不会造成内存溢出 缺点: 翻页的速度比较慢 2.假分页(逻辑分页): 实现原理: 一次性将所有的数

  • Javaweb实现在线人数统计代码实例

    这篇文章主要介绍了Javaweb实现在线人数统计代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 session并不是浏览器关闭时销毁的,而是在session失效的时候销毁下列代码就是监测session创建.销毁 package com.my.count; import javax.servlet.http.*; public class SessionCounter implements HttpSessionListener { pr

  • Java List分页功能实现代码实例

    这篇文章主要介绍了Java List分页功能实现代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 今天,工作上,由于业务的一些特殊性,需要拿到数据后在java代码中进行分页. 写了一个工具类,记录如下: import java.util.ArrayList; import java.util.List; import org.apache.commons.collections.CollectionUtils; /** * java内存分

  • JavaWeb Refresh响应头代码实例详解

    这篇文章主要介绍了JavaWeb Refresh响应头代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.Refresh响应头:可以理解为定时的重定向,在指定的时间后发生页面的跳转 二.代码示例: package cn.xxx.Servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.Ht

  • Spring Data Jpa实现分页和排序代码实例

    之前我们学习了如何使用Jpa访问关系型数据库.通过Jpa大大简化了我们对数据库的开发工作.但是,之前的例子中我们只提到了最简单的CRUD(增删改查)操作.实际上,Spring Data Jpa对于分页以及排序的查询也有着完美的支持,接下来,我们来学习如何通过Pageable来对数据库进行分页查询. 添加maven依赖 首先我们需要引入Jpa,数据库直接使用hsqldb内存数据库就可以了: <project xmlns="http://maven.apache.org/POM/4.0.0&q

  • Mybatis分页PageHelper插件代码实例

    具体步骤如下 1.pom.xml添加jar包: <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.4</version> </dependency> 2.添加mybatis-config.xml配置文件: <configuration> <

  • JavaWeb验证码校验功能代码实例

    后台生成验证码工具方法 /* * 设置图片的背景色 */ public static void setBackGround(Graphics g, int WIDTH, int HEIGHT) { // 设置颜色 g.setColor(Color.WHITE); // 填充区域 g.fillRect(0, 0, WIDTH, HEIGHT); } /* * 设置图片的边框 */ public static void setBorder(Graphics g, int WIDTH, int HEI

  • MyBatis基于pagehelper实现分页原理及代码实例

    使用pagehelper分页的原理是: 通过MyBatis的插件原理(类似web里的filter拦截器),在mapper配置文件将pagehelper注册为MyBatis的插件,从而进行分页 1.通过maven引入pagehelper依赖: <!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper --> <dependency> <groupId>com.github.pagehe

  • vue 基于element-ui 分页组件封装的实例代码

    具体代码如下所示: <template> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :page-sizes="[10, 20, 30, 40]" :page-size="pageSize" layout="total, sizes, prev, pager, next, j

  • bootstrap 路径导航 分页 进度条的实例代码

    路径导航 <ol class="breadcrumb"> <li><a href="#" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel=&

随机推荐