java web的后台分页

java web的后台分页

前几天写了一个java web的后台分页,因为以前都是使用框架中的pagehelp 方法,自己也一直没有写过。前几天有时间,所以就自己写了一下,毕竟是个小白。分页对java web 开发来说,肯定会遇到的。今天在这边写一下,确保以后自己不会忘记。


下面写一下思路:我使用的是ssm框架,其实框架跟分页关系并不是很大,你可以用传统的servlet 也可以使用这种分页。首先我们要使用的sql语句就简单的两句。然后我们要创一个Page 的类,这个类是最重要的,这个类用于封装从数据库里查出的记录。然后传到前台 用el表达式获取数据 显示在页面就好了。
页面我就简单的写了一下,主要是为了实现功能。也没有添加任何的样式。还有一般的web项目 很多个页面都是有分页的,所以我们不能在一个页面中写死,我们可以把jsp 中的分页页面给单独抽取出来,这样的话如果其他页面要使用的话,就直接引入一下就好了。这个我就不写了。可以自己去实现一下。

select * from 表名 limit 0,10;
这个0表示从第一条数据开始取,10表示取多少条数据

select count(*) from 表名 用来查询表里面有多少条数据

下面就开始贴一下我的代码

用于封装数据

package com.runoob.proven.po;

import java.util.List;

/**
 * @author  
 * @date 创建时间:2017年2月25日 下午3:10:02 
 * @version 1.0 
 * @parameter  
 * @since  
 * @return  
 */
public class Page {
     private List list;//存放数据

     private int totalpage;//记住总页数

     private int totalrecord; //总记录数

     private int pagesize ;

     private int pagenum;//代表用户想看的页码

     private int startpage; //开始页

     private int endpage; //结束页


     //用来计算总页数
     public Page(int totalrecord,int pagesize,int pagenum){
         this.pagesize = pagesize;
         this.totalrecord = totalrecord;
         this.pagenum = pagenum;
         if(this.totalrecord % this.pagesize==0){
             this.totalpage=this.totalrecord/this.pagesize;


         }else{
             this.totalpage=this.totalrecord/this.pagesize+1;

         }

         if(this.pagenum-2<=0){
             this.startpage=1;


         }else{
             this.startpage = this.pagenum -2;

         }
         if(this.pagenum+2>this.totalpage){

             this.endpage = this.totalpage;
         }else{

             this.endpage =this.pagenum+2;
         }


     }


    public int getStartpage() {
        return startpage;
    }


    public void setStartpage(int startpage) {
        this.startpage = startpage;
    }


    public int getEndpage() {
        return endpage;
    }


    public void setEndpage(int endpage) {
        this.endpage = endpage;
    }


    public List getList() {
        return list;
    }


    public void setList(List list) {
        this.list = list;
    }


    public int getTotalpage() {
        return totalpage;
    }


    public void setTotalpage(int totalpage) {
        this.totalpage = totalpage;
    }


    public int getTotalrecord() {
        return totalrecord;
    }


    public void setTotalrecord(int totalrecord) {
        this.totalrecord = totalrecord;
    }


    public int getPagesize() {
        return pagesize;
    }


    public void setPagesize(int pagesize) {
        this.pagesize = pagesize;
    }


    public int getPagenum() {
        return pagenum;
    }


    public void setPagenum(int pagenum) {
        this.pagenum = pagenum;
    }




}

service 层


    //分页处理
    public Page getPageData(String pagenum,String pagesize) {

        int totalrecord  = userMapper.getTotalrecord();
        System.out.println(pagenum+"+"+pagesize+"+"+totalrecord);
        int row =Integer.parseInt(pagesize); 
        int pages ;


        if(pagenum == null){
            pages = 1;
        }else{
            pages = Integer.parseInt(pagenum);
        }
        int pageindex = (pages-1)*row;


        System.out.println(pageindex+"+"+row);
        Page page =new Page(totalrecord,row,pages);
        List list = userMapper.getPageData(pageindex,row);
        page.setList(list);

        return page;
    }

controller 层:用户从前台传回来 第几页 和记录数 默认的话pagenum=1 pagesize=10;

   //得到页数
      @RequestMapping("page")
      public String getPageData(Model model,String pagenum,String pagesize) throws Exception{

          if(pagesize ==null){
              pagesize="10";
              Page page = userService.getPageData(pagenum,pagesize);
              model.addAttribute("page", page);
          }else{

              Page page = userService.getPageData(pagenum,pagesize);
              model.addAttribute("page", page);
          }

          return "user/list";

      }

jsp 页面

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>
<!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">
<link rel="stylesheet" href="${pageContext.request.contextPath }/static/css/cssReset.css">
<title>Insert title here</title>
<style>
  input{
    border:1px solid #666;
  }
  .table{
     margin:50px auto;
     text-align:center;
  }
   .table tr td{
    width:100px;
    border:1px solid black; 
   }
   .page{
    text-align:center;
    margin:50px auto;
    font-size:15px;
    font-family:"微软雅黑";

   }
</style>
</head>
<body>
<table class="table">
   <tr>
      <td>id</td>
      <td>用户名</td>
      <td style="width:100px;">生日</td>
      <td>性别</td>
      <td>居住地</td>
      <td>密码</td>
      <td>操作</td>
   </tr>
   <c:forEach items="${page.list}" var="user"> 
     <tr>
    <td><input type="checkbox" name="items_id" value="${user.id}"/></td>
    <td>${user.username }</td>
    <td><fmt:formatDate value="${user.birthday}" pattern="yyyy-MM-dd"/></td>
    <td>${user.sex }</td>
    <td>${user.address }</td>
    <td>${user.password }</td>
    <td><a href="${pageContext.request.contextPath }/user/showEditUser.do?id=${user.id}">修改</a></td>
     </tr>
   </c:forEach>


</table>
    <div class="page"><input type="text" size="5" value="${page.totalpage }">页&nbsp;&nbsp;
         当前第<input type="text" size="5" value="${page.pagenum }">页&nbsp;&nbsp;
    <a href="${pageContext.request.contextPath }/user/page.do?pagenum=${page.pagenum-1}">上一页</a>&nbsp;&nbsp;
  <c:forEach var="pagenum" begin="${page.startpage }" end="${page.endpage }" >
        <a href="${pageContext.request.contextPath }/user/page.do?pagenum=${pagenum}">${pagenum }</a>&nbsp;
  </c:forEach> 
    <a href="${pageContext.request.contextPath }/user/page.do?pagenum=${page.pagenum+1}">下一页</a>&nbsp;&nbsp;
     <input type="text" id="input1" size="5"><button onclick="goPage()">go</button>

    <script>
       function goPage(){
           var maxpage = ${page.totalpage};
           var pagesize = document.getElementById("input1").value;
           var pages = parseInt(pagesize);
           if(pagesize==null||pagesize==""){
               alert("页码不能为空!");
               return;

           }
           if(!pagesize.match("\\d+")){

               alert("页码只能是数字!");
               return;

           }
           if(pagesize<1 || pages>maxpage){
               alert("没有当前页码!");
               return;

           }
           window.location.href="${pageContext.request.contextPath }/user/page.do?pagenum="+pagesize;


       }
    </script>
    </div>
</body>
</html>

dao 层 就不贴代码了 就使用sql 语句把想要的数据查出来就好了。我想代码还是的自己写,不能全部都看别人的,这样永远也学不会。

  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值