JSP中的分页

来源:互联网 发布:男士高档护肤品牌 知乎 编辑:程序博客网 时间:2024/05/16 17:52

参考链接:http://blog.csdn.net/xiazdong/article/details/6857515
参考链接:http://blog.csdn.net/gavin_john/article/details/51335224

思路:
分页关键点:
1、定义四个变量
int pageCount = 1;//表示共有多少页
int pageSize = 3;//指定每页显示3条记录
int pageNow = 1;//当前页
int rowCiunt;//代表共有多少行记录;
2、分页公式:
pageCount = (rowcount-1)/pageSize +1;//表示共有多少页
3、分页语句:
select * from table limit [offset] [size]
offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。
例子:取第11条到第15条数据,共5条
select * from table_name limit 10,5

分段关键点:
比如:有15条记录,每页显示3条数据,共分5页
需求:如何控制我们的超链接只显示3页, 即: << [1] [2] [3] >>
点击 >>时,显示后面的3页,因为此时后面还有两页所以显示剩下的两页。即<<[4][5]>>
点击 <<时,显示前面的3页。即 << [1] [2] [3] >>
思路:
1、要实现上述需求就需要把此时的 [1][2][3][4][5]进行分段,即: [1][2][3]和[4][5]两段。
2、仿照分页思路
定义三个变量:
int yeshuSize=3;//指定每段只显示3页
int jiluduanNow=1;//当前记录段
int jiluduan = 1;//表示共分多少段
分段公式:jiluduan = (pageCount-1)/yeshuSize + 1;
分段显示算法:
段数:                   第1段 第2段 第3段 第4段 第5段……
每段的起始页数:   第1页 第4页 第7页 第10页 第13页…3n-2
每段的终止页数:  第3页 第6页 第9页 第12页 第15页…3n
总结:如果以后规定每段显示几页,算法推理过程与此类似。

<%@page import="java.sql.ResultSet"%><%@page import="com.languang.jdbc.DAOImpl_housetable"%><%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%//参考资料:http://blog.csdn.net/xiazdong/article/details/6857515//参考资料://http://blog.csdn.net/gavin_john/article/details/51335224    String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">    <title>后台添加房源页面</title>    <script type="text/javascript">    function gotopage()    {      var zhengze=/^\d+$/;      var zhi = document.getElementById("page");    if(zhengze.test(zhi.value))    {      location.href="HouseInfo.jsp?pageNow="+zhi.value;      return true;    }    return false;    }    </script>  </head>  <body>  <center>  <font size="25" color="blue" >公众平台房屋发布管理中心</font>  </center>  <br/>  <%= session.getAttribute("username")%>,欢迎你!    <br/>    <br/>    <table border="2" cellspacing="0" width="100%" >        <tr>            <td align="center">房产编号</td>            <td align="center">房屋类型</td>            <td align="center">地址</td>            <td align="center">房价<br/>(万)</td>            <td align="center">图片地址</td>            <td align="center">房屋面积<br/>(平方米)</td>            <td align="center">房屋名称</td>            <td align="center">房屋城市</td>            <td align="center">房屋收藏数</td>            <td align="center">发布时间</td>            <td align="center">发布帐号</td>            <td align="center">操作</td>        </tr>        <%        int pageCount = 1;//表示共有多少页        int pageSize = 3;//指定每页显示3条记录        int pageNow = 1;//当前页        int yeshuSize=3;//指定每次只显示3int jiluduanNow=1;//记录段        int jiluduan = 1;        if(session.getAttribute("username") != null){            /* 此处为分页全部显示时所用            DAOImpl_housetable di = new DAOImpl_housetable();            ResultSet rs = di.query("select * from housetable");            while(rs.next()){ */            String spageNow = request.getParameter("pageNow");            String sjiluduanNow = request.getParameter("jiluduanNow");            if(spageNow != null)            {            pageNow = Integer.parseInt(spageNow);            }            if(sjiluduanNow != null)            {                jiluduanNow = Integer.parseInt(sjiluduanNow);            }            DAOImpl_housetable dh = new DAOImpl_housetable();            ResultSet rr = dh.query("select count(*) from housetable");            rr.next();            int rowcount = rr.getInt(1);            pageCount = (rowcount-1)/pageSize +1;//表示共有多少页            jiluduan = (pageCount-1)/yeshuSize + 1;            //此处处理当前页大于总段与当前段小于1两种特殊情况            if(jiluduanNow<1)            {                jiluduanNow=1;            }            if(jiluduanNow>=jiluduan)            {                jiluduanNow=jiluduan;            }            //此处处理当前页大于总页与当前页小于1两种特殊情况            if(pageNow<1)            {            pageNow=1;            }            if(pageNow>=pageCount)            {            pageNow=pageCount;            }            DAOImpl_housetable di = new DAOImpl_housetable();            int num = (pageNow-1)*pageSize;            ResultSet rs = di.query("select * from housetable limit "+num+","+pageSize+"");            System.out.println("========"+rowcount+"条记录======"+pageCount+"页========"+jiluduan+"段=====第"+jiluduanNow+"段");            while(rs.next())            {            int f1 = rs.getInt(1);            String f2 = rs.getString(2);            String f3 = rs.getString(3);            String f4 = rs.getString(4);            String f5 = rs.getString(5);            String f6 = rs.getString(6);            String f7 = rs.getString(7);            String f8 = rs.getString(8);            int f9 = rs.getInt(9);            String f10 = rs.getString(10);            String f11 = rs.getString(11);        %>        <tr>            <td align="center"><%=f1 %></td>            <td align="center"><%= f2%></td>            <td align="center"><%= f3%></td>            <td align="center"><%=f4 %></td>            <td align="center"><%= f5%></td>            <td align="center"><%= f6%></td>            <td align="center"><%= f7%></td>            <td align="center"><%= f8%></td>            <td align="center"><%= f9%></td>            <td align="center"><%= f10%></td>            <td align="center"><%= f11%></td>            <td align="center"><button onclick="{location.href='${pageContext.request.contextPath}/Delete_housetable?houseID=<%= rs.getInt(1)%>'}">删除</button></td>            </tr>        <%}        }else{        %>        <a href = "index.html">请您登陆!</a>        <%        }        %>    </table>    <a href='HouseInfo.jsp?pageNow=1' >首页</a>     <%    // if(pageNow!=1) 此处为分页全部显示时所用       if(jiluduanNow!=1)    {   // out.println("<a href='HouseInfo.jsp?pageNow="+(pageNow-1)+"'>上一页</a> ");     out.println("<a href='HouseInfo.jsp?jiluduanNow="+(jiluduanNow-1)+"'><<</a> ");    }     %>     <%     /*   此处为分页全部显示时所用     for(int i = 1; i <= pageCount;i++)       {       out.println("<a href='HouseInfo.jsp?pageNow="+i+"'><"+i+"></a>");       } */   if(jiluduanNow <jiluduan)   {            for(int i = 3*jiluduanNow-2; i <=jiluduanNow*3;i++)           {               out.println("<a href='HouseInfo.jsp?pageNow="+i+"'><"+i+"></a>");           }   }       if(jiluduanNow==jiluduan)       {           if(jiluduanNow*3>=pageCount)           {               for(int i = 3*jiluduanNow-2; i <=pageCount;i++)               {                   out.println("<a href='HouseInfo.jsp?pageNow="+i+"'><"+i+"></a>");               }           }       }     %>     <%      // if(pageNow!=pageCount)     if(jiluduanNow!=jiluduan)     {   // out.println("<a href='HouseInfo.jsp?pageNow="+(pageNow+1)+"'>下一页</a> ");     out.println("<a href='HouseInfo.jsp?jiluduanNow="+(jiluduanNow+1)+"'>>></a> ");    }     %>     <a href="HouseInfo.jsp?pageNow=<%=pageCount %>"  >尾页</a><%=pageNow%>页/共<%=pageCount%>页                 跳转到<input type="text" name="page" id="page" style="width:25px"/><input type="button" value="跳" onclick="gotopage()" />    <br/>    <button onclick="{location.href='Update.jsp'}">添加房源</button>  </body></html>
0 0
原创粉丝点击