请问JSP里面有几种的普遍分页方法?能用session来保存吗。怎么实现?

解决方案 »

  1.   

    1,自己写sql语句分页
    2.使用现成的类分页,这包括很多框架提供的分页方法,比如Hibernate等等
    3.session具体得看你的业务逻辑是怎么样的,可以用session也可以用其他的select top 每页显示记录数 * from 你的表名 where 主键 not in(select id from 你的表名 where 主键<=每页显示记录数*(当前页数-1))
      

  2.   

    主要的有以下四种方法
    1 在JSP页面中直接分页
    2 在Servlet中实现分页
    3 在JavaBean中实现分页
    4 万能分页技术
      

  3.   

    我一般都是用Hibernate 的query.setFirstResultSet()和query.setMaxResultSet实现分页
      

  4.   

    刚做完JSP的课设,这是我前几天在网上找的分页的SQL语句,挺好用的,往里传递需要的参数就行了
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO
    --名称:分页存储过程
    --使用示例 EXEC sp_PageIndex '*',' FROM StuSources ',2,10
    --注意 
    --目前还没有对输入的参数进行严格的验证
    --默认为输入都是合法有效的create  PROC sp_PageIndex
     @sqlSelect varchar(800) --SELECT 后面 FROM 前面 的 字段 不用包含SELECT
    ,@sqlFrom varchar(800) --FROM 后面 的 字段 包含FROM
    ,@countPerPage int -- 每页数据行数
    ,@toPage int --要转到的页码ASBEGIN
    -- 根据每页数据行数 和 要转到的页码 得到 数据起止点
    Declare @start int
    Declare @end intset @end = @countPerPage * @toPage
    set @start = @countPerPage * (@toPage - 1) + 1
    -- 临时表名称 可随机命名
    Declare @tmpTable varchar(10)
    SET @tmpTable ='#tmp'Declare @sqlStr varchar(800)
    -- 创建数据源到临时表
    SELECT @sqlStr = 'SELECT Identity(int,1,1) AS RowIndex,'
    SELECT @sqlStr = @sqlStr + rtrim(@sqlSelect) + ' INTO  '+ @tmpTable 
    SELECT @sqlStr = @sqlStr + rtrim(@sqlFrom) 
    -- 查询临时表 得到所需要的数据
    SELECT @sqlStr = @sqlStr + ' '+'SELECT '+ rtrim(@sqlSelect) +' FROM ' + @tmpTable 
    SELECT @sqlStr = @sqlStr + ' WHERE  RowIndex BETWEEN ' + Convert(char,@start) + " AND " + Convert(char,@end)
    -- 删除临时表
    SELECT @sqlStr = @sqlStr + ' '+'DROP TABLE '+@tmpTable
    EXEC (@sqlStr)
    END
    GO
    SET QUOTED_IDENTIFIER OFF 
    GO
    SET ANSI_NULLS ON 
    GO
      

  5.   

    我贴给你段基础的jsp分页代码<%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.sql.*"%>
    <html>
    <head>
    <title>分页显示</title>
    </head>
    <body>
    <center>
    <h1>人员列表</h1>
    <hr>
    <br>
    <%!
    final String jspUrl = "list_person_false_05.jsp" ;
    %>
    <%
    // 定义如下分页变量
    // 1、定义没页要显示的记录数
    int lineSize = 10 ;
    // 2、定义一个当前是第几页
    int currentPage = 1 ;
    // 计算出总页数
    int pageSize = 0 ;
    // 总记录数 / 每页显示的记录数
    int allRecorders = 30 ;
    %>
    <%
    // 接收传过来的当前页
    try
    {
    currentPage = Integer.parseInt(request.getParameter("cp")) ;
    }
    catch(Exception e)
    {}
    %>
    <%
    final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
    final String DBURL = "jdbc:mysql://localhost/mldn" ;
    final String DBUSER = "root" ;
    final String DBPASSWORD = "mysqladmin" ;
    Connection conn = null ;
    %>
    <%
    try
    {
    Class.forName(DBDRIVER) ;
    conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
    PreparedStatement pstmt = null ;
    String sql = "SELECT COUNT(id) from person" ;

    pstmt = conn.prepareStatement(sql) ;
    ResultSet rs = pstmt.executeQuery() ;
    if(rs.next())
    {
    allRecorders = rs.getInt(1) ;
    }
    rs.close() ;
    pstmt.close() ; // 计算总页数
    pageSize = (allRecorders+lineSize-1)/lineSize ; sql = "SELECT id,uid,name,password FROM person" ;
    pstmt = conn.prepareStatement(sql) ;
    rs = pstmt.executeQuery() ;
    %>
    <script language="javaScript">
    function openPage(curpage)
    {
    document.spage.cp.value = curpage ;
    // alert(cupage) ;
    document.spage.submit() ;
    }
    function selOpenPage()
    {
    document.spage.cp.value = document.spage.selpage.value ;
    document.spage.submit() ;
    }
    </script>
    <form name="spage" action="<%=jspUrl%>">
    <input type="button" value="首页" onClick="openPage(1)" <%=currentPage==1?"disabled":""%>>
    <input type="button" value="上一页" onClick="openPage(<%=currentPage-1%>)" <%=currentPage==1?"disabled":""%>>
    <input type="button" value="下一页" onClick="openPage(<%=currentPage+1%>)" <%=currentPage==pageSize?"disabled":""%>>
    <input type="button" value="尾页" onClick="openPage(<%=pageSize%>)" <%=currentPage==pageSize?"disabled":""%>>
    <input type="hidden" name="cp" value="">
    <font color="red" size="5"><%=currentPage%></font>
    /
    <font color="red" size="5"><%=pageSize%></font>
    跳转到
    <select name="selpage" onChange="selOpenPage()">
    <%
    for(int x=1;x<=pageSize;x++)
    {
    %>
    <option value="<%=x%>" <%=currentPage==x?"selected":""%>><%=x%></option>
    <%
    }
    %>
    </select>

    </form>
    <table border="1" width="80%">
    <tr>
    <td>编号</td>
    <td>登陆名称</td>
    <td>姓名</td>
    <td>密码</td>
    <td colspan="2">操作</td>
    </tr>
    <%
    int i = 0 ;
    for(int x=0;x<(currentPage-1)*lineSize;x++)
    {
    rs.next();
    }
    // 对于输出代码之前要求按显示的页数空出
    for(int x=0;x<lineSize;x++)
    {
    if(rs.next())
    {
    i++ ;
    int id = rs.getInt(1) ;
    String userid = rs.getString(2) ;
    String name = rs.getString(3) ;
    String password = rs.getString(4) ;
    %>
    <tr>
    <td><%=id%></td>
    <td><%=userid%></td>
    <td><%=name%></td>
    <td><%=password%></td>
    <td>更新</td>
    <td>删除</td>
    </tr>
    <%
    }
    }
    rs.close() ;
    pstmt.close() ;
    if(i==0)
    {
    %>
    <tr>
    <td colspan="6">没有任何数据!!</td>
    </tr>
    <%
    }
    %>
    </table>
    <%
    }
    catch(Exception e)
    {
    %>
    <h2>系统出错!!!</h2>
    <%
    }
    finally
    {
    conn.close() ;
    }
    %>
    </center>
    </body>
    </html>