各位大哥:    本人现在想把数据显示到页面上,要用到分页技术,网上没找到合适的,而我手头上的分页技术效率低,谁有经典的jsp分页方法,最好能用Java写成一个方法,然后控制,最好是通用的,拿过来就能用。如能发到我的邮箱就更好了:
  [email protected],谢谢各位!!

解决方案 »

  1.   

    int page;
    if (request.getParameter("page") == null){
        page=1;  //默认为1
    }else{
        if (Integer.parseInt(request.getParameter("page")) < 1){
            page=1;
        }else{
            int temp = 数据的count;
            int tempPg;        if (temp%每页显示的条数 != 0){
                tempPg = temp/每页显示的条数 + 1;
            }else{
                tempPg = temp/每页显示的条数;
            }        if (Integer.parseInt(request.getParameter("page")) > tempPg){
                page = tempPg;
            }else{
                page = Integer.parseInt(request.getParameter("page"));
            }
        }
    }//SQL相关int rowBegin=0;
    if (page >= 1){
        rowBegin = (page-1) * 每页显示的条数;
    }String sql = "select top 每页显示的条数 * from 表 where ID not in (select top "+rowBegin +" ID from 表)"
      

  2.   

    int page; 
    if (request.getParameter("page") == null){ 
        page=1;  //默认为1 
    }else{ 
        if (Integer.parseInt(request.getParameter("page")) < 1){ 
            page=1; 
        }else{ 
            int temp = 数据的count; 
            int tempPg;         if (temp%每页显示的条数 != 0){ 
                tempPg = temp/每页显示的条数 + 1; 
            }else{ 
                tempPg = temp/每页显示的条数; 
            }         if (Integer.parseInt(request.getParameter("page")) > tempPg){ 
                page = tempPg; 
            }else{ 
                page = Integer.parseInt(request.getParameter("page")); 
            } 
        } 

    //SQL相关 int rowBegin=0; 
    if (page >= 1){ 
        rowBegin = (page-1) * 每页显示的条数; 
    } String sql = "select top 每页显示的条数 * from 表 where ID not in (select top "+rowBegin +" ID from 表)"
      

  3.   

    <%@ page language="java" pageEncoding="utf-8"%>
    <%@ page import="java.util.*"%>
    <%@ page import="cn.tang.dao.impl.*"%>
    <%@page import="cn.tang.dao.*"%>
    <%@page import="cn.tang.entity.*"%>
    <%
    TopicDao topicDao = new TopicDaoImpl();
    UserDao userDao = new UserDaoImpl();
    ReplyDao replyDao = new ReplyDaoImpl();
    BoardDao boardDao = new BoardDaoImpl(); int p = Integer.parseInt(request.getParameter("page"));
    int boardId = Integer.parseInt(request.getParameter("boardId"));
    List list = topicDao.findListTopic(p, boardId); //取得该板块主题
    Board board = boardDao.findBoard(boardId); //取得板块信息
    int prep = p;
    int nextp = p;
    if (list.size() == 20)
    nextp = p + 1;
    if (p > 1)
    prep = p - 1;
    %>
    <html>
    <head>
    <title>帖子列表</title>
    <link href="css/style.css" rel="stylesheet" type="text/css" />
    </head> <body>
    <div id="Wholer">
    <div id="Header">
    <div class="logo">
    <br>
    <img src="image/logo.gif" />
    </div>
    <%
    if(session.getAttribute("user")==null){
     %>
    <div class="h">
    您尚未:
    <a href="login.jsp">登陆</a> &nbsp;| &nbsp;
    <a href="reg.jsp">注册</a> |
    </div>
    <%
    }else {
    User loginUser=(User)session.getAttribute("user");
    %>
    <div class="h">
    您好:<%=loginUser.getUName() %>&nbsp;| &nbsp;
    <a href="manage/doLogout.jsp">登出</a> |
    </div>
    <%} %>
    </div>
    <div id="Bodyer">
    <div id="div">
    &gt;&gt;
    <b><a href="index.jsp">论坛首页 </a> </b>&gt;&gt;
    <b><%=board.getBoardName()%></b>
    </div>
    <div id="div">
    <a href="post.jsp?boardId=<%=boardId %>"><img src="image/post.gif" border="0"></a>
    <br>
    <a href="list.jsp?page=<%=p-1 %>&boardId=<%=boardId %>">上一页</a> |
    <a href="list.jsp?page=<%=p+1 %>&boardId=<%=boardId %>">下一页</a>
    </div>
    <div>
    <table width="100%" cellpadding="0" cellspacing="0">
    <tr>
    <td colspan="4" class="h">
    &nbsp;
    </td>
    </tr>
    <tr class="tr2" align="center">
    <td colspan="2">
    文章
    </td>
    <td width="5%">
    作者
    </td>
    <td width="5%">
    回复
    </td>
    </tr>
    <%
    for (int i = 0; i < list.size(); i++) {
    Topic topic = (Topic) list.get(i);
    User user = userDao.findUser(topic.getUid());
    %>
    <tr class="tr1">
    <td width="5%" id="td">
    <img src="image/topic.gif" width="18" height="21">
    </td>
    <td>
    <a href="detail.jsp?page=1&topicId=<%=topic.getTopicId()%>"><%=topic.getTitle()%></a>
    </td>
    <td id="td"><%=user.getUName()%></td>
    <td id="td"><%=replyDao.findCountReply(topic.getTopicId())%></td>
    </tr>
    <%
    }
    %>
    </table>
    </div>
    </div>
    <div id="Footer">
    <!-- 声明  -->
    <br />
    <center class="gray">
    版权所有
    </center>
    </div>
    </div>
    </body>
    </html>
      

  4.   

    要是有分,我给你一个我自己封装的jar文件
      

  5.   

    int PageSize = 1; //每页显示记录数
    int StartRow = 0;  //开始显示记录的编号 
    int PageNo = 0; //需要显示的页数
    int CounterStart = 0; //每页页码的初始值
    int CounterEnd = 0; //显示页码的最大值
    int RecordCount = 0; //总记录数;
    int MaxPage = 0; //总页数
    int PrevStart = 0; //前一页
    int NextPage = 0; //下一页
    int LastRec = 0;
    int LastStartRecord = 0;//最后一页开始显示记录的编号  //获取需要显示的页数,由用户提交
    if (request.getParameter("PageNo") == null) { //如果为空,则表示第1页
    if (StartRow == 0) {
    PageNo = StartRow + 1;    //设定初始页面为1
    }
    } else {
    PageNo = Integer.parseInt(request.getParameter("PageNo")); //获得用户提交的页数
    StartRow = (PageNo - 1) * PageSize; //获得开始显示的记录编号
    } //因为显示页码的数量是动态变化的,假如总共有一百页,则不可能同时显示100个链接。而是根据当前的页数显示
    //一定数量的页面链接 //设置显示页码的初始值!!
    if (PageNo % PageSize == 0) {
    CounterStart = PageNo - (PageSize - 1);
    } else {
    CounterStart = PageNo - (PageNo % PageSize) + 1;
    } CounterEnd = CounterStart + (PageSize - 1);
    //如果当前页是第一页,则灰色首页和上一页代码
    if (PageNo == 1) {
    NextPage = PageNo + 1;
    out.print("<font face=宋体 size=2> 首页 </font>");
    out.print("<font face=宋体 size=2> 上一页 </font>");
    out.print("<a href=testpage.jsp?PageNo=" + NextPage
    + "><font face=宋体 size=2> 下一页 </font></a>");
    out.print("<a href=testpage.jsp?PageNo=" + MaxPage
    + "><font face=宋体 size=2> 末页 </font></a>");
    } else if (PageNo == MaxPage) {
    PrevStart = PageNo - 1;
    out
    .print("<a href=testpage.jsp?PageNo=1><font face=宋体 size=2>首页</font></a>");
    out.print("<a href=testpage.jsp?PageNo=" + PrevStart
    + "><font face=宋体 size=2> 上一页 </font></a>");
    out.print("<font face=宋体 size=2> 下一页 </font>");
    out.print("<font face=宋体 size=2> 末页 </font>");
    } else {
    PrevStart = PageNo - 1;
    NextPage = PageNo + 1;
    out
    .print("<a href=testpage.jsp?PageNo=1><font face=宋体 size=2> 首页 </font></a>");
    out.print("<a href=testpage.jsp?PageNo=" + PrevStart
    + "><font face=宋体 size=2> 上一页 </font></a>");
    out.print("<a href=testpage.jsp?PageNo=" + NextPage
    + "><font face=宋体 size=2> 下一页 </font></a>");
    out.print("<a href=testpage.jsp?PageNo=" + MaxPage
    + "><font face=宋体 size=2> 末页 </font></a>");
    }
      

  6.   

    分页可以根据你对数据要求的不同来做
    如果要求数据要时时更新的话
    那分页就把语句写在SQL中,读出来就行
    如果要求不是时时更新可以全部读取出来放在Session中
    然后用一个类来分页,意思就是传入得到的所有数据
    返回的是第几页的数据~
    如果你想要,我这有有个自己写的用session保存所有数据然后分页的代码
    对读出来的数据要求不是那么严谨的话
    这个方法还不错,可以减少查询数据的操作~
      

  7.   

    总条数count,每页条数pageSize,总页数totalPage
    totalPage = (count + pageSize - 1) / pageSize,
      

  8.   

    我的资源里有个 javabean 分页源码,下载后即可使用
    楼主可以下载下来改成 mvc 版的:关键是里边的分页思想比较不错,很通用
      

  9.   

    要经典的JSP分页来了!!
    Struts标记 和HIBERNATE 中都有自带分页的!!
    自己去看吧!这是很经典的!
      

  10.   

    方法多得很,我做的有用自定义标签做的,也有用JSP+servlet做的,只不过粘贴在这里太多了
      

  11.   

    我建议用jsp+hibernate实现分页的效果,hibernate本身就带有一个分页的方法,而且还可以减少java代吗,提高开发速度。
      

  12.   

    支持 14 楼的。
    可以减少java代吗,提高开发速度。
      

  13.   

    http://blog.csdn.net/youjianbo_han_87/archive/2008/07/25/2711249.aspx看下我这个能满足楼主不