Intellij-IDEA搭建SrpingMVC+Spring+Mybatis+Bootstrap+分页(二)

上一篇文章地址:
Intellij-IDEA搭建SrpingMVC+Spring+Mybatis+Bootstrap+分页-笔记(一)
这篇文章将会在上一篇文章的基础上做完善,还没有看上一篇文章的可以先看下

1.引入Bootstrap,优化登入页面及注册页面

先引入bootstrap、jquery、jquery validate文件和一张背景图片
注:在引入bootstrap.js之前要先引入jquery
关于bootstrap具体如何使用,请百度学习一下:Bootstrap菜鸟教程
这里写图片描述
login.jsp完整代码,登入页面和注册页面写了一起

<%@ page contentType="text/html;charset=UTF-8"%>
<%
    /*获取工程路径*/
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<head>
    <title>登入页面</title>
    <script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script>
    <!--用百度的静态资源库的cdn安装bootstrap环境-->
    <!-- 新 Bootstrap 核心 CSS 文件 -->
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
    <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <!--表单校验JS:jquery.validate-->
    <script type="text/javascript" src="<%=basePath%>js/jquery.validate.min.js" ></script>
    <script type="text/javascript" src="<%=basePath%>js/login.js" ></script>
    <style type="text/css">
        body{background: url(<%=basePath%>img/4.jpg) no-repeat;background-size:cover;font-size: 16px;}
        .form{background: rgba(255,255,255,0.2);width:400px;margin:100px auto;}
        #login_form{display: block;}
        #register_form{display: none;}
        .fa{display: inline-block;top: 27px;left: 6px;position: relative;color: #ccc;}
        input[type="text"],input[type="password"]{padding-left:26px;}
        .checkbox{padding-left:21px;}
    </style>
    <script type="text/javascript">
        $(function () {
            if('${msg}'!=''){
                $("#register_form").css("display", "block");
                $("#login_form").css("display", "none");
                alert('${msg}');
            }
        });
    </script>
</head>
<body>
<div class="container">
    <div class="form row">
        <form action="<%=basePath%>user/login" method="post" class="form-horizontal col-sm-offset-3 col-md-offset-3" id="login_form">
            <h3 class="form-title">Login to your account</h3>
            <div class="col-sm-9 col-md-9">
                <div class="form-group">
                    <i class="fa fa-user fa-lg"></i>
                    <input class="form-control required" type="text" placeholder="LoginName" name="loginName" autofocus="autofocus" maxlength="20"/>
                </div>
                <div class="form-group">
                    <i class="fa fa-lock fa-lg"></i>
                    <input class="form-control required" type="password" placeholder="Password" name="password" maxlength="8"/>
                </div>
                <div class="form-group">
                    <label class="checkbox">
                        <input type="checkbox" name="remember" value="1"/> Remember me
                    </label>
                    <hr />
                    <a href="javascript:;" id="register_btn" class="">Create an account</a>
                </div>
                <div class="form-group">
                    <input type="submit" class="btn btn-success pull-right" value="Login "/>
                </div>
            </div>
        </form>
    </div>

    <div class="form row">
        <form action="<%=basePath%>user/register" method="post" class="form-horizontal col-sm-offset-3 col-md-offset-3" id="register_form">
            <h3 class="form-title">Login to your account</h3>
            <div class="col-sm-9 col-md-9">
                <div class="form-group">
                    <i class="fa fa-user fa-lg"></i>
                    <input class="form-control required" type="text" placeholder="Name" name="name" autofocus="autofocus"/>
                </div>
                <div class="form-group">
                    <i class="fa fa-user fa-lg"></i>
                    <input class="form-control required" type="text" placeholder="Age" name="age" autofocus="autofocus"/>
                </div>
                <div class="form-group">
                    <i class="fa fa-user fa-lg"></i>
                    <input class="form-control required" type="text" placeholder="LoginName" name="loginName" autofocus="autofocus"/>
                </div>
                <div class="form-group">
                    <i class="fa fa-lock fa-lg"></i>
                    <input class="form-control required" type="password" placeholder="Password" id="register_password" name="password"/>
                </div>
                <div class="form-group">
                    <i class="fa fa-check fa-lg"></i>
                    <input class="form-control required" type="password" placeholder="Re-type Your Password" name="rpassword"/>
                </div>
                <div class="form-group">
                    <input type="submit" class="btn btn-success pull-right" value="Sign Up "/>
                    <input type="button" class="btn btn-info pull-left" id="back_btn" value="Back"/>
                </div>
            </div>
        </form>
    </div>
</div>
</body>
</html>

login.js,注册时做表单校验

$().ready(function() {
    $("#login_form").validate({
        rules: {
            loginName: "required",
            password: {
                required: true,
                minlength: 1
            },
        },
        messages: {
            loginName: "请输入登入名",
            password: {
                required: "请输入密码"

            },
        }
    });
    $("#register_form").validate({
        rules: {
            loginName: "required",
            age:{
                digits:true,
                min:0,
                max:120
            },
            password: {
                required: true,
                minlength: 1
            },
            rpassword: {
                equalTo: "#register_password"
            }
        },
        messages: {
            name:"请输入您的姓名",
            loginName: "请输入登入名",
            age:{
                required:"请输入您的年龄"
            },
            password: {
                required: "请输入密码"
            },
            rpassword: {
                equalTo: "两次密码不一样",
                required: "请再次输入密码"
            }
        }
    });
});
$(function() {
    $("#register_btn").bind("click",function () {
        $("#register_form").css("display", "block");
        $("#login_form").css("display", "none");
    });
    $("#back_btn").bind("click",function () {
        $("#register_form").css("display", "none");
        $("#login_form").css("display", "block");
    });
});

启动应用,访问localhost:8080
这里写图片描述
点击 Create an account 显示注册页面
这里写图片描述
登入试试,账号admin,密码123
这里写图片描述

2.注册功能实现

注册校验规则看login.js文件,不符合校验规则会出现对应的提示
这里写图片描述
用户注册接口

    /**
     * 用户注册
     * @param userInfo
     * @return
     */
    @RequestMapping("/register")
    public String register(UserInfo userInfo,Model model){
        try {
            UserInfo user = userInfoService.selectUserByLoginName(userInfo.getLoginName());
            if(user!=null){
                model.addAttribute("msg","注册失败,该登入名已存在!");
            }else{
                userInfoService.insertUser(userInfo);
                model.addAttribute("msg","注册成功,请登入!");
            }
        }catch (Exception e){
            model.addAttribute("msg","注册失败!");
            e.printStackTrace();
        }
        return "/login";
    }

注册一个账号试试
这里写图片描述
点击Sing up提示注册成功,现在到数据库看下
这里写图片描述

3.系统主界面设计##

垂直方向分3层,第一层显示当前用户信息和一个退出按钮,第二层是导航栏信息,第三层是数据主体部分

main.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
    /*获取工程路径*/
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<head>
    <title>主界面</title>
    <script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script>
    <!-- 新 Bootstrap 核心 CSS 文件 -->
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
    <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $("#userManager").attr("class","active");
            $("#frm_right").attr("src","<%=basePath%>user/selectAll");
        });

        function menuClick(obj,url){
            if(obj==1){
                $("#userManager").attr("class","active");
                $("#roleManager").attr("class","");
                $("#menuManager").attr("class","");
            }
            if(obj==2){
                $("#roleManager").attr("class","active");
                $("#userManager").attr("class","");
                $("#menuManager").attr("class","");
            }
            if(obj==3){
                $("#menuManager").attr("class","active");
                $("#roleManager").attr("class","");
                $("#userManager").attr("class","");
            }
            $("#frm_right").attr("src",url);
        }

        function loginOut(obj){
            if (confirm('您确定要退出系统吗?')) {
                obj.href = "<%=basePath%>user/loginOut";
                obj.onclick = "";
                obj.click();
            }
        }
        //主界面自适应高度   这个函数要在frm_right加载完了调用才有用
        function mainHeight() {
            var ifm= document.getElementById("frm_right");
            var subWeb =document.frames ? document.frames["frm_right"].document : ifm.contentDocument;
            if(ifm != null && subWeb != null) {
                var hg=subWeb.body.scrollHeight;
                ifm.height = hg<600?600:hg;
            }
        }
    </script>
</head>
<body>
<%--导航栏和用户信息--%>
<div>
    <nav class="navbar navbar-default" role="navigation">
        <div class="container-fluid">
            <ul class="nav navbar-nav navbar-left">
                <li><a href="#">您好:${userInfo.name},欢迎登入,当前账号为:${userInfo.loginName}</a></li>
            </ul>
            <ul class="nav navbar-nav navbar-right">
                <li><a href="javascript:void(0)" onclick="loginOut(this)"><span class="glyphicon glyphicon-user"></span> 退出</a></li>
            </ul>
        </div>
    </nav>
    <nav class="navbar navbar-default" role="navigation">
        <div class="container-fluid">
            <div class="navbar-header">
                <a class="navbar-brand" href="#"></a>
            </div>
            <div>
                <ul class="nav navbar-nav" id="top" style="font-size: 16px;">
                    <li id="userManager"><a href="javascript:void(0)" onclick="menuClick(1,'<%=basePath%>user/selectAll')">用户管理</a></li>
                    <li id="roleManager"><a href="javascript:void(0)" onclick="menuClick(2,'<%=basePath%>user/roleManager')">权限管理</a></li>
                    <li id="menuManager"><a href="javascript:void(0)" onclick="menuClick(3,'<%=basePath%>user/menuManager')">菜单管理</a></li>
                </ul>
            </div>
        </div>
    </nav>
</div>
<%--下方主界面--%>
<div style=" text-align: center;height: 100%;">
    <iframe frameborder="0" name="frm_right" id="frm_right"	width="100%" scrolling="no" src="" style="margin:0px auto 0px auto; background-color: white;padding: 0px" ></iframe>
</div>
</body>
</html>

在views目录下新建userManager.jsp、roleManager.jsp、menuManager.jsp,这是三个导航栏的主界面,这里写用户管理,其他不管

userManager.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
    /*获取工程路径*/
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<head>
    <script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script>
    <!-- 新 Bootstrap 核心 CSS 文件 -->
    <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
    <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
    <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <script type="text/javascript">
        //主界面高度自适应
        $(function () {
            //top代表顶层窗口对象
            top.mainHeight();
            if('${msg}'!=''){
                alert('${msg}');
            }
        });
        //查询事件
        function findData(){
            $('#currentPage').val('1');
            document.forms[0].submit();
        }
        //清空查询条件
        function clearP(){
            $("#name").val("");
            $("#loginName").val("");
        }

        //删除用户
        function del(id) {
            if(confirm("确定要删除该用户吗?")){
                $.ajax({
                    url:"<%=basePath%>user/del",
                    type:"post",
                    dataType:"json",
                    data:{id:id},
                    success:function () {
                        alert("删除成功!");
                        $("#myform").submit();
                    },
                    error:function () {//不知道为什么有时会走error
                        alert("删除成功!");
                        $("#myform").submit();
                    }
                });
            }
        }
        //编辑用户 先获取当前ID用户信息
        function edit(id) {
            $.ajax({
                url:"<%=basePath%>user/selectUserById",
                type:"post",
                dataType:"json",
                data:{id:id},
                success:function (data) {
                    $("#editModal").modal("show");
                    $("#name2").val(data.name);
                    $("#age2").val(data.age);
                    $("#loginName2").val(data.loginName);
                    $("#rpassword2").val(data.password);
                    $("#password2").val(data.password);
                    $("#myid").val(data.id);
                },
                error:function () {
                    alert("获取用户数据失败!");
                }
            });
        }
    </script>
</head>
<body>
<div class="table-responsive">
    <form class="form-inline" role="form" action="<%=basePath%>user/selectAll" method="post" id="myform">
    <div style="margin-left: 80px;">
        姓名:<input type="text" name="name" id="name" value="${userInfo1.name}" class="form-control" style="width: 120px;">
        账号:<input type="text" name="loginName" id="loginName" value="${userInfo1.loginName}" class="form-control" style="width: 120px;">
        <input type="button" onclick="findData();" class="btn btn-info" value="查询"/>
        <input type="button" onclick="clearP();" class="btn btn-info" value="清空"/>
        <input type="button" data-toggle="modal" data-target="#addModal" class="btn btn-info" value="新增"/>
    </div>
    <hr style="margin-top: 10px;"/>
    <div style="margin-left: 20px;">
        <table class="table table-hover">
            <thead>
            <tr style="text-align: center">
                <th style="text-align: center">序号</th>
                <th style="text-align: center">姓名</th>
                <th style="text-align: center">年龄</th>
                <th style="text-align: center">账号</th>
                <th style="text-align: center">密码</th>
                <th style="text-align: center">操作</th>
            </tr>
            </thead>
            <tbody>
            <c:if test="${!empty userList }">
                <c:forEach items="${userList}" var="user" varStatus="status">
                    <tr style="text-align: center">
                        <td>${user.id}</td>
                        <td>${user.name }</td>
                        <td>${user.age }</td>
                        <td>${user.loginName }</td>
                        <td>${user.password }</td>
                        <td>
                            <button type="button" class="btn btn-success" onclick="edit('${user.id }')">编辑</button>
                            <button type="button" class="btn btn-danger" onclick="del('${user.id }')">删除</button>
                        </td>
                    </tr>
                </c:forEach>
            </c:if>
            </tbody>
        </table>
        <div >
           <jsp:include page="/common/page.jsp"/>
        </div>
    </div>
</form>
</div>
<!-- 新增用户模态框(Modal) -->
<form action="<%=basePath%>user/addUser" method="post" id="register_form1">
    <div class="modal fade" id="addModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
                        &times;
                    </button>
                    <h4 id="mytitle" class="modal-title" id="myModalLabel">
                        新增用户
                    </h4>
                </div>
                <div class="modal-body">
                    <div class="form-group">
                        <i class="fa fa-user fa-lg"></i>
                        <input class="form-control required" type="text" id="name1" placeholder="Name" name="name" autofocus="autofocus"/>
                    </div>
                    <div class="form-group">
                        <i class="fa fa-user fa-lg"></i>
                        <input class="form-control required" type="text" placeholder="Age" id="age1" name="age" autofocus="autofocus"/>
                    </div>
                    <div class="form-group">
                        <i class="fa fa-user fa-lg"></i>
                        <input class="form-control required" type="text" placeholder="LoginName" id="loginName1" name="loginName" autofocus="autofocus"/>
                    </div>
                    <div class="form-group">
                        <i class="fa fa-lock fa-lg"></i>
                        <input class="form-control required" placeholder="Password" id="password1" name="password"/>
                    </div>
                    <div class="form-group">
                        <i class="fa fa-check fa-lg"></i>
                        <input class="form-control required" placeholder="Re-type Your Password" id="rpassword1" name="rpassword"/>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">关闭
                    </button>
                    <button type="submit" class="btn btn-info">
                        确认
                    </button>
                </div>
            </div><!-- /.modal-content -->
        </div><!-- /.modal -->
    </div>
</form>
<!-- 编辑用户模态框(Modal) -->
<form action="<%=basePath%>user/addUser" method="post" id="editModalForm">
    <input type="hidden" id="myid" name="myid"/>
    <div class="modal fade" id="editModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
        <div class="modal-dialog">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">
                        &times;
                    </button>
                    <h4 id="mytitle1" class="modal-title" id="myModalLabel1">
                        编辑用户
                    </h4>
                </div>
                <div class="modal-body">
                    <div class="form-group">
                        <i class="fa fa-user fa-lg"></i>
                        <input class="form-control required" type="text" id="name2" placeholder="Name" name="name" autofocus="autofocus"/>
                    </div>
                    <div class="form-group">
                        <i class="fa fa-user fa-lg"></i>
                        <input class="form-control required" type="text" placeholder="Age" id="age2" name="age" autofocus="autofocus"/>
                    </div>
                    <div class="form-group">
                        <i class="fa fa-user fa-lg"></i>
                        <input class="form-control required" type="text" placeholder="LoginName" id="loginName2" name="loginName" autofocus="autofocus"/>
                    </div>
                    <div class="form-group">
                        <i class="fa fa-lock fa-lg"></i>
                        <input class="form-control required" placeholder="Password" id="password2" name="password"/>
                    </div>
                    <div class="form-group">
                        <i class="fa fa-check fa-lg"></i>
                        <input class="form-control required" placeholder="Re-type Your Password" id="rpassword2" >
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-default" data-dismiss="modal">关闭
                    </button>
                    <button type="submit" class="btn btn-info">
                        确认
                    </button>
                </div>
            </div><!-- /.modal-content -->
        </div><!-- /.modal -->
    </div>
</form>
</body>
</html>


roleManager.jsp


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<div style="text-align: center">这里是权限管理页面!</div>
</body>
</html>

menuManager.jsp


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<div style="text-align: center">这里是菜单管理页面</div>
</body>
</html>

UserInfoController,实现基本的增删改查功能

package com.xujd.controller;

import com.xujd.model.UserInfo;
import com.xujd.service.UserInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;

@Controller
@RequestMapping("/user")
public class UserInfoController{
    @Autowired
    private UserInfoService userInfoService;

    /**
     * 用户登入
     * @param userInfo
     * @return
     */
    @RequestMapping("/login")
    public String login(UserInfo userInfo, HttpServletRequest request, Model model){
        String msg="";
        //根据登入账号判断该用户是否存在
        UserInfo user = userInfoService.selectUserByLoginName(userInfo.getLoginName());
        if(user==null){
            msg="该用户不存在!";
        }else{
            if(user.getPassword().equals(userInfo.getPassword())){
                /*将用户信息放入session*/
                request.getSession().setAttribute("userInfo",user);
                //获取sessionid
                String sessionId=request.getSession().getId();
                model.addAttribute("sessionId",sessionId);
                //进入主界面
                return "/main";
            }else{
                msg="密码错误!";
            }
        }
        model.addAttribute("msg",msg);
        return "/login";
    }
    /**
     * 用户注册
     * @param userInfo
     * @return
     */
    @RequestMapping("/register")
    public String register(UserInfo userInfo,Model model){
        try {
            UserInfo user = userInfoService.selectUserByLoginName(userInfo.getLoginName());
            if(user!=null){
                model.addAttribute("msg","注册失败,该登入名已存在!");
            }else{
                userInfoService.insertUser(userInfo);
                model.addAttribute("msg","注册成功,请登入!");
            }
        }catch (Exception e){
            model.addAttribute("msg","注册失败!");
            e.printStackTrace();
        }
        return "/login";
    }

    /**
     * 退出系统
     * @return
     */
    @RequestMapping("/loginOut")
    public String loginOut(HttpServletRequest request){
        //清空session
        request.getSession().invalidate();
        return "login";
    }

    /**
     * 新增或编辑用户信息
     * @param userInfo
     * @param model
     * @return
     */
    @RequestMapping("/addUser")
    public String addUser(UserInfo userInfo,Model model,String myid){
        try {
            UserInfo user = userInfoService.selectUserByLoginName(userInfo.getLoginName());
            if(user!=null){
                model.addAttribute("msg","操作失败,该登入名已存在!");
            }else{
                if(myid!=null&&!"".equals(myid)){//myid存在表示编辑操作
                    userInfo.setId(Integer.parseInt(myid));
                    userInfoService.updateUser(userInfo);
                }else{
                    userInfoService.insertUser(userInfo);
                }
                model.addAttribute("msg","操作成功!");
            }
        }catch (Exception e){
            model.addAttribute("msg","操作失败!");
            e.printStackTrace();
        }
        return "redirect:/user/selectAll";
    }

    /**
     * 根据ID获取用户
     * @param id
     * @param model
     * @return
     */
    @RequestMapping("selectUserById")
    @ResponseBody
    public UserInfo selectUserById(int id,Model model){
        UserInfo userInfo = userInfoService.selectUserById(id);
        return userInfo;
    }

    /**
     * 删除用户
     * @param id 用户ID
     * @return
     */
    @RequestMapping("/del")
    @ResponseBody
    public String del(int id){
        try {
            userInfoService.deleteUser(id);
        }catch (Exception e){
            e.printStackTrace();
        }
        return null;
    }

    /**
     * 权限管理
     * @return
     */
    @RequestMapping("roleManager")
    public String roleManager(){
        return "roleManager";
    }

    /**
     * 菜单管理
     * @return
     */
    @RequestMapping("menuManager")
    public String menuManager(){
        return "menuManager";
    }
    /**
     * 获取所有用户
     * @return
     */
    @RequestMapping("/selectAll")
    public String selectAll(Model model,UserInfo userInfo){
        model.addAttribute("userList",userInfoService.selectUserByParams(userInfo));
        model.addAttribute("userInfo1",userInfo);
        return "/userManager";
    }
}

启动应用,访问localhost:8080,并登入,可以看到主界面为:
这里写图片描述
这里写图片描述
这里写图片描述
新增用户
这里写图片描述
可以看到用户已经成功添加到数据库了
这里写图片描述
查找
这里写图片描述
编辑
这里写图片描述
点击确认
这里写图片描述
删除功能就不截图演示了,到这里用户管理的增删改查已经完成,还剩一个分页功能。

4.分页功能的实现

在model包下新增PageUtil

package com.xujd.model;

import java.util.List;

/**
 * 分页工具类
 *
 * @author XuJD
 *
 */
public class PageUtil {
    /**
     * 当前页 默认为1
     */
    private int currentPage=1;

    /**
     * 每页显示的记录数  默认为10条
     */
    private int pageSize = 10;

    /**
     * 总页数
     */
    private int totalPage;

    /**
     * 总记录数
     */
    private int totalRecord;

    /**
     * 起始记录
     */
    private int startRow;

    /**
     * 终止记录
     */
    private int endRow;

    /**
     * 上一页
     */
    private int upPage;

    /**
     * 下一页
     */
    private int downPage;

    /**
     * 访问路径
     */
    private String accessUrl;

    /**
     * 页面需要显示的数据集合
     */
    private List objectLists;


    /**
     * 当前页页码
     *
     * @param currentPage
     */
    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }
    public int getCurrentPage() {
        return currentPage;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    /**
     * 总页数,根据总记录数计算得出
     *
     * @return
     */
    public int getTotalPage() {
        return this.totalRecord % this.pageSize == 0 ? this.totalRecord
                / this.pageSize : (this.totalRecord / this.pageSize) + 1;
    }
    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
    }
    /**
     * 总记录数
     *
     * @return
     */
    public int getTotalRecord() {
        return totalRecord;
    }

    public void setTotalRecord(int totalRecord) {
        this.totalRecord = totalRecord;
    }

    /**
     * 起始记录行
     *
     * @return
     */
    public int getStartRow() {
        return (this.currentPage - 1) * this.pageSize;
    }

    /**
     * 结束记录行
     *
     * @return
     */
    public int getEndRow() {
        return this.currentPage * this.pageSize;
    }

    /**
     * 上一页
     *
     * @return
     */
    public int getUpPage() {
        return (this.currentPage == 1) ? 1 : (this.currentPage - 1);
    }

    /**
     * 下一页
     *
     * @return
     */
    public int getDownPage() {
        return (this.currentPage == this.totalPage) ? this.totalPage
                : (this.currentPage + 1);
    }

    /*
     * 结果记录集
     */
    public List getObjectLists() {
        return objectLists;
    }

    public void setObjectLists(List objectLists) {
        this.objectLists = objectLists;
    }

}

改造一下selectAll接口

    /**
     * 获取所有用户
     * @return
     */
    @RequestMapping("/selectAll")
    public String selectAll(Model model,UserInfo userInfo,PageUtil pageP){
        //获取所有数据数量
        int count = userInfoService.selectUserCount();
        PageUtil page = new PageUtil();
        //pageSize默认为10  currentPage默认为1
        page.setPageSize(pageP.getPageSize());
        page.setCurrentPage(pageP.getCurrentPage());
        //mysql中用 --这里用limit a,b 去分页,数据量比较大时不推荐limit
        //a表示起始行,b表示数量,如 limit 0,5 表示查5条数据,从数据库中的第一条查起
        userInfo.setStartRow(page.getStartRow());
        userInfo.setEndRow(page.getEndRow()-page.getStartRow());
        //分页查询数据
        List<UserInfo> userList = userInfoService.selectUserByParams(userInfo);
        //设置所有用户数量  如果有查询条件则以查询结果数量为准,不然为所有数量
        if((userInfo.getName()!=null&&!"".equals(userInfo.getName()))
                ||(userInfo.getLoginName()!=null&&!"".equals(userInfo.getLoginName()))){
            page.setTotalRecord(userList.size());
        }else{
            page.setTotalRecord(count);
        }
        model.addAttribute("page1",page);
        model.addAttribute("userList",userList);
        model.addAttribute("userInfo1",userInfo);
        return "/userManager";
    }

在common包下新增page.jsp

<%@ page contentType="text/html;charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
    /*获取工程路径*/
    String path = request.getContextPath();
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!-- 新 Bootstrap 核心 CSS 文件 -->
<link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdn.bootcss.com/jquery/2.1.1/jquery.min.js"></script>
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
<style type="text/css">
    .btn {
        /*color: rgb(50, 151, 233);*/
        /*background-color: #F6F6F6;*/
        cursor: pointer;
        float: none;
        margin-left: auto;
        padding: 5px 10px;
    }
</style>
<script type="text/javascript">
    function doSubmitForm(value) {
        if (isNaN(value)) {
            alert("请输入0-9的数字!");
            document.getElementById('page').value = "";
            return false;
        } else if (value === null || value === "" || value <= 0) {
            document.getElementById("currentPage").value = 1;
        } else if (parseInt(value) >parseInt('${requestScope.page1.totalPage}')) {
            document.getElementById("currentPage").value = '${requestScope.page1.totalPage}';
        } else {
            document.getElementById("currentPage").value = value;
        }
        document.forms[0].submit();
    }
    function chageSize() {
        $('#currentPage').val('1');
        document.forms[0].submit();
    }
</script>
<table style="font-size: 12px;" align="right">
    <tr>
        <c:if test="${requestScope.page1.totalRecord > 0}">
            <td style="border: 0;">
                共<span class='totalRecord'>${requestScope.page1.totalRecord}条记录&nbsp;&nbsp;每页
                <select name="pageSize" id="pageSize" onchange="chageSize()" title="">
                    <option value="5"  <c:if test="${requestScope.page1.pageSize == 5}">selected</c:if>>5</option>
                    <option value="10" <c:if test="${requestScope.page1.pageSize == 10}">selected</c:if>>10</option>
                    <option value="15" <c:if test="${requestScope.page1.pageSize == 15}">selected</c:if>>15</option>
                    <option value="20" <c:if test="${requestScope.page1.pageSize == 20}">selected</c:if>>20</option>
                    <option value="30" <c:if test="${requestScope.page1.pageSize == 30}">selected</c:if>>30</option>
                </select>
                条&nbsp;&nbsp;第
                ${requestScope.page1.currentPage}
                页/共
                ${requestScope.page1.totalPage}
                页
                <input type="button" class="btn addNewButton btn-info" value="首页"
                       onclick="<c:if test="${requestScope.page1.totalPage > 1}">
                               doSubmitForm(getElementById('firstPage').value);</c:if>"/>
                <input type="hidden" value="${1}" id="firstPage"/>


                <c:if test="${requestScope.page1.currentPage > 1 &&
                    requestScope.page1.currentPage <= requestScope.page1.totalPage}">
                    <input type="button" class="btn addNewButton btn-info" value="上一页"
                           onclick="doSubmitForm(getElementById('upPage').value);"/>
                    <input type="hidden" value="${requestScope.page1.upPage}"
                           id="upPage"/>
                </c:if>

                <c:if test="${requestScope.page1.currentPage >= 1 &&
                    requestScope.page1.currentPage < requestScope.page1.totalPage}">
                    <input type="button" class="btn addNewButton btn-info" value="下一页"
                           onclick="doSubmitForm(getElementById('downPage').value);"/>
                    <input type="hidden" value="${requestScope.page1.downPage}" id="downPage"/>
                </c:if>

                <input type="button" class="btn addNewButton btn-info" value="末页"
                       onclick="<c:if test="${requestScope.page1.totalPage > 1 }">
                               doSubmitForm(getElementById('endPage').value);</c:if>"/>
                <input type="hidden" value="${requestScope.page1.totalPage}" id="endPage"/>
                转到
                <input type="text" style="width:30px;" id="page" size="2" title="">
                页
                <input type="button" value="GO" class="btn addNewButton btn-info"
                       onclick="<c:if test="${requestScope.page1.totalPage > 1}">
                               doSubmitForm(getElementById('page').value);</c:if>">
                <input type="hidden" name="currentPage" id="currentPage"
                       value="${requestScope.page1.currentPage}"/>
            </td>
        </c:if>
        <c:if test="${requestScope.page1.totalRecord == 0}">
            <td colspan="99" style="border: 0;">
                <div align="left">
                    <span style="color: red">没有符合条件的记录,请输入条件后重试!</span>
                </div>
            </td>
        </c:if>
    </tr>

</table>


在userManager页面引入page.jsp
这里写图片描述
最后改下sql,在原有的基础上做了个limit过滤

这里写图片描述
重启应用,访问localhost:8080,并登入,可以看到已经成功分页了
这里写图片描述
点击下一页,可以看到已经获取第二页数据了
这里写图片描述


对于分页还不是很清楚的小伙伴认真阅读page.jsp和PageUtil类,还有两个重要的参数:当前页(currentPage)和pageSize,因为后端都是通过这两个参数做处理去获取数据的

到这里整个系统的主界面设计、分页相关功能都已经完成了,是时候分享一波源码了

本章节源码下载地址:
CSDN下载地址:
Intellij-IDEA搭建SrpingMVC+Spring+Mybatis+Bootstrap+分页(二)
GitHub下载地址:
Intellij-IDEA搭建SrpingMVC+Spring+Mybatis+Bootstrap+分页(二)
GitHub下载的小伙伴记得点个star哟,万分感谢!

关于Intellij IDEA集成SSM明细请看上一篇文章
上一篇文章地址:
Intellij-IDEA搭建SrpingMVC+Spring+Mybatis+Bootstrap+分页(一)

  • 8
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值