文档章节

jsp+servlet+mysql分页问题 - 功能实现二

寻找丢失的草帽儿
 寻找丢失的草帽儿
发布于 2016/04/07 22:12
字数 814
阅读 30
收藏 0

首先在之前定义的类UserBean相同包下新建一个类PageUtil如下:

package bean;

/**
 * Created by socul on 2016/4/7.
 */
public class PageUtil {

    private int pageSize;//每页显示的条数
    private int recordCount;//总共的条数
    private int currentPage;//当前页面

    //构造方法
    public PageUtil(int pageSize, int recordCount, int currentPage){
        this.pageSize = pageSize;
        this.recordCount = recordCount;
        setCurrentPage(currentPage);
    }

    public PageUtil(int pageSize, int recordCount){
        this(pageSize, recordCount, 1);
    }

    //总页数
    public int getPageCount(){
        int size = recordCount/pageSize;//总条数/每页显示的条数=总页数
        int mod = recordCount % pageSize;//最后一页的条数
        if(mod != 0)
            size++;
        return recordCount == 0 ? 1 : size;
    }

    //包含,起始索引为0
    public int getFromIndex(){
        return (currentPage-1) * pageSize;
    }

    //不包含
    public int getToIndex(){
        return  Math.min(recordCount, currentPage * pageSize);
    }

    //得到当前页
    public int getCurrentPage(){
        return currentPage;
    }

    //设置当前页
    public void setCurrentPage(int currentPage){
        int validPage = currentPage <= 0 ? 1 : currentPage;
        validPage = validPage > getPageCount() ? getPageCount() : validPage;
        this.currentPage = validPage;
    }

    //得到每页显示的条数
    public int getPageSize(){
        return pageSize;
    }

    //设置每页显示的条数
    public void setPageSize(int pageSize){
        this.pageSize = pageSize;
    }

    //得到总共的条数
    public int getRecordCount(){
        return recordCount;
    }

    //设置总共的条数
    public void setRecordCount(int recordCount){
        this.recordCount = recordCount;
    }

}


   然后再写我们的jsp页面代码,新建userInfo.jsp,代码如下:

<%@ page import="bean.UserBean" %>
<%@ page import="java.util.List" %>
<%@ page import="bean.PageUtil" %>
<%--
  Created by IntelliJ IDEA.
  User: socul
  Date: 2016/3/28
  Time: 22:52
  To change this template use File | Settings | File Templates.
--%>

<%-- 该页面通过引用PageUtil类实现了对获取的用户数据的分页功能 --%>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>用户信息表</title>
    <style type="text/css">

        table {
            width: 600px;
        }

        table.gridtable {
            font-family: verdana, arial, sans-serif;
            font-size: 11px;
            color: #333333;
            border-width: 1px;
            border-color: #666666;
            border-collapse: collapse;
        }

        table.gridtable th {
            border-width: 1px;
            padding: 8px;
            border-style: solid;
            border-color: #666666;
            background-color: #dedede;
        }

        table.gridtable td {
            border-width: 1px;
            padding: 8px;
            border-style: solid;
            border-color: #666666;
            background-color: #ffffff;
        }

    </style>
</head>
<body>

<h1>-----用户信息表-----</h1>

<button type="submit" onclick="showMask()" style="width: 80px;height: 30px">添加用户</button>
<br/><br/>

<table class="gridtable" id="bg">
    <tr>
        <td>ID</td>
        <td>username</td>
        <td>password</td>
        <td>Option</td>
    </tr>
    <%
        List<UserBean> userList = (List<UserBean>) request.getSession().getAttribute("userList");
        String pageStr = request.getParameter("page");
        int currentPage = 1;
        if (pageStr != null)
            currentPage = Integer.parseInt(pageStr);
        PageUtil pUtil = new PageUtil(8, userList.size(), currentPage);
        currentPage = pUtil.getCurrentPage();
    %>

    <%
        for (int i = pUtil.getFromIndex(); i < pUtil.getToIndex(); i++) {
            UserBean user = userList.get(i);
    %>

    <tr>
        <td><%=user.getId()%>
        </td>
        <td><%=user.getUsername()%>
        </td>
        <td><%=user.getPassword()%>
        </td>
        <td><a onclick="isDel()" href="/deleteUser?id=<%=user.getId() %>">删除</a>
            &nbsp;&nbsp;<a href="updateUser.jsp?id=<%=user.getId() %>">修改</a></td>
    </tr>

    <%
        }%>

</table>
<br/>
<div>
    <a href="userInfo.jsp?page=1">首页</a>
    <a href="userInfo.jsp?page=<%=(currentPage - 1)%>">上页</a>
    <a href="userInfo.jsp?page=<%=(currentPage + 1)%>">下页</a>
    <a href="userInfo.jsp?page=<%=pUtil.getPageCount()%>">末页</a>&nbsp;
    记录总数<%=pUtil.getRecordCount()%>条&nbsp; 当前页<%=currentPage%>/总页数<%=pUtil.getPageCount()%>
    &nbsp;每页显示<%=pUtil.getPageSize()%>条
</div>
<br/>
<div id="addUserForm" style="display: none">
    <input type="button" id="button_hide" value="关闭" onclick="hideMask()">
    <br/>
    <form method="post" action="/addUser" id="form">
        <input type="text" id="id" name="id" placeholder="ID">
        <input type="text" id="username" name="username" placeholder="用户">
        <input type="text" id="password" name="password" placeholder="密码">
        <input type="submit" id="button_add" value="添加" onclick="hideMask()">
    </form>
</div>
<script type="text/javascript">

    function showMask() {
        document.getElementById("addUserForm").style.display = "block";
    }

    function hideMask() {
        document.getElementById("addUserForm").style.display = 'none';
    }

    function isDel() {
        window.confirm("确认删除该记录?")
    }

</script>
</body>
</html>


 这样我们就可以引用PageUtil这个类实现完整的分页功能了,而且jsp、servlet、dao层,bean层也可以分开来写,使得代码浅显易懂,不再冗杂,并且实现了MVC设计规范。通过这篇博客希望可以帮助大家容易的实现分页功能和简单的数据库增删改查。

© 著作权归作者所有

寻找丢失的草帽儿
粉丝 1
博文 5
码字总数 4136
作品 0
程序员
私信 提问
Datatables插件1.10.15版本服务器处理模式ajax获取分页数据实例解析

一、问题描述 前端需要使用表格来展示数据,找了一些插件,最后确定使用dataTables组件来做。 后端的分页接口已经写好了,不能修改。接口需要传入页码(pageNumber)和页面显示数据条数(pageSi...

OSC首席混子
04/23
8
0
MyBaties分页插件PageHelper的简单使用

抛出问题: 如果想要将现有的select语句改为支持分页功能的查询语句该怎么做呢? 最简单的一种做法就是将所有的select语句都加上limit来实现分页,这种做法有什么问题呢? 有没有一种简便方法...

嘴角轻扬30
2018/12/10
85
0
Hibernate中的query.setFirstResult(),query.setMaxResu

一、query.scroll()和query.setFirstResult(),query.setMaxResults();这两种方法都可以取到一定范围内的数据,用来数据分页显示。那么两者区别,以及两者的效率如何? 答:1.scroll是用JDBC2...

五大三粗
2015/11/06
1K
0
稀饭下雪/CompanyManager

CompanyManager项目简介 该项目的搭建环境: 项目管理:maven 框架:spring、springmvc、mybatis、easyui 数据:mysql 主要用途:实现了用户管理、菜单管理、部门管理、理财管理、理财报表、...

稀饭下雪
2016/11/02
0
0
DEDECMS教程:首页实现分页的两种方法

今天的DEDECMS教程中,主要讨论首页实现分页的两种方法。   有时在做织梦模板的时候需要实现首页分页效果,但是织梦本身首页是不带分页功能的,那如何实现织梦首页分页呢?有两种办法可以实...

越野小生
2016/04/24
79
0

没有更多内容

加载失败,请刷新页面

加载更多

Blockstack-2 :Blockstack ID注册

本篇文章主要记录Blockstack ID注册的流程; 在介绍注册流程之前,先简单的介绍一下Blockstack ID; 相对于传统互联网来说,Blockstack ID更像是统一的账号系统;即一个账号即可登录和授权所...

Riverzhou
23分钟前
1
0
面试官问:平时碰到系统CPU飙高和频繁GC,你会怎么排查?

处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题。当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警。本文主要针对系统运...

Java高级架构师n
47分钟前
21
0
面向对象编程

1、类和对象 类是对象的蓝图和模板,而对象是实例;即对象是具体的实例,类是一个抽象的模板 当我们把一大堆拥有共同特征的对象的静态特征(属性)和动态特征(行为)都抽取出来后,就可以定...

huijue
今天
21
0
redis异常解决 :idea启动本地redis出现 jedis.exceptions.JedisDataException: NOAUTH Authentication required

第一次安装在本地redis服务,试试跑项目,结果却出现nested exception is redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required错误,真是让人头疼 先检查一...

青慕
今天
33
0
Spring 之 IoC 源码分析 (基于注解方式)

一、 IoC 理论 IoC 全称为 Inversion of Control,翻译为 “控制反转”,它还有一个别名为 DI(Dependency Injection),即依赖注入。 二、IoC方式 Spring为IoC提供了2种方式,一种是基于xml...

星爵22
今天
34
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部