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

首先在之前定义的类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设计规范。通过这篇博客希望可以帮助大家容易的实现分页功能和简单的数据库增删改查。

你可能感兴趣的:(jsp+servlet+mysql分页问题 - 功能实现二)