zoukankan      html  css  js  c++  java
  • JSP实现分页功能

     分页须知知识点:

    (1)JDBC2.0的可滚动结果集。

    (2)HTTP GET请求。


    一、可滚动结果集


    Connection con  = DriverManager.getConnection();

    PreparedStatement stmt = con.prepareStatement(sql,ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);

    ResultSet rs = stmt.executeQuery();

    常用方法:

    (1)rs.absolute(n);        可以将指针跳到第n行。

    (2)rs.relative(n);           可以将指针相对向下或向上n行。

    (3)rs.first();

    (4)rs.last();

    (5)int curRow = rs.getRow();    指针指向的当前行


    二、功能实现分解


    1.计算结果的个数


    rs.last();

    int size = rs.getRow();

    即可得到结果的个数。


    2.得到需要分几页


    如果一页能够放5条记录,则

    int pageCount = (size%5==0)?(size/5):(size/5+1);

    即可获得需要分几页。


    3.控制一页中规定显示记录个数


    如果一页能显示5条记录,可以通过使用count进行计数。

    int count = 0;

    do{

        if(count>=5) break;

        .....

        count++;

    }while(rs.next());

    通过break语句,能够使其显示到超过规定条目就跳出。


    4.如何知道当前是第几页


    通过HTTP get的特点,在地址栏中标明当前地址,如http://.......?curPage=1    表示现在是第一页。

    String tmp = request.getParameter("curPage");
    if(tmp==null){
           tmp="1";
    }
    curPage = Integer.parseInt(tmp);

    可以获得当前页。

    注意:

    rs.absolute(1);表示指向第一条记录;

    不存在rs.absolute(0);

    rs.absolute((curPage-1)*PAGESIZE+1);      把结果集指针调整到当前页应该显示的记录的开始.

    比如如果一页显示5条记录,当前页是第二页,则需要把指针调整到6,当前页是第三页,则需要把指针调整为11.


    5.点击首页、上一页、下一页、尾页的行为


    <a href="multipage.jsp?curPage=<%curPage+1%>" >下一页</a>

    <a href="multipage.jsp?curPage=<%curPage-1%>" >上一页</a>

    <a href="multipage.jsp?curPage=<%pageCount%>" >尾页</a>

    <a href="multipage.jsp?curPage=1" >首页</a>


    6.为了保存当前页位置,则需要把当前页位置设为全局变量。


    综合代码:
    <%@ page contentType="text/html" pageEncoding="GB2312" language="java"%>
    <%@ page import="java.sql.*"%>
    <html>
    	<head>
    		<title>hello</title>
    	</head>
    	<body>
    	<table border="1" spacing="2">
    <%!
    	public static final String DRIVER = "com.mysql.jdbc.Driver";
    	public static final String USER = "root";
    	public static final String PASS = "12345";
    	public static final String URL = "jdbc:mysql://localhost:3306/MLDN";
    	public static final int PAGESIZE = 5;
    	int pageCount;
    	int curPage = 1;
    %>
    <%
    	//一页放5个
    	String user = null;
    	String pass = null;
    	try{
    		Class.forName(DRIVER);
    		Connection con = DriverManager.getConnection(URL,USER,PASS);
    		String sql = "SELECT empno,ename,job,hiredate,sal,comm FROM emp";
    		PreparedStatement stat = con.prepareStatement(sql,ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY);
    		ResultSet rs = stat.executeQuery();
    		rs.last();
    		int size = rs.getRow();
    		pageCount = (size%PAGESIZE==0)?(size/PAGESIZE):(size/PAGESIZE+1);
    		String tmp = request.getParameter("curPage");
    		if(tmp==null){
    			tmp="1";
    		}
    		curPage = Integer.parseInt(tmp);
    		if(curPage>=pageCount) curPage = pageCount;
    		boolean flag = rs.absolute((curPage-1)*PAGESIZE+1);
    		out.println(curPage);
    		int count = 0;
    		
    		do{
    			if(count>=PAGESIZE)break;
    			int empno = rs.getInt(1);
    			String ename = rs.getString(2);
    			String job = rs.getString(3);
    			Date hiredate = rs.getDate(4);
    			float sal = rs.getFloat(5);
    			int comm = rs.getInt(6);
    			count++;
    			%>
    		<tr>
    			<td><%=empno%></td>
    			<td><%=ename%></td>
    			<td><%=job%></td>
    			<td><%=hiredate%></td>
    			<td><%=sal%></td>
    			<td><%=comm%></td>
    		</tr>
    			<%
    		}while(rs.next());
    		con.close();
    	}
    	catch(Exception e){
    		
    	}
    %>
    </table>
    <a href = "multipage.jsp?curPage=1" >首页</a>
    <a href = "multipage.jsp?curPage=<%=curPage-1%>" >上一页</a>
    <a href = "multipage.jsp?curPage=<%=curPage+1%>" >下一页</a>
    <a href = "multipage.jsp?curPage=<%=pageCount%>" >尾页</a>
    第<%=curPage%>页/共<%=pageCount%>页
    
    </body>
    </html>


    作者:xiazdong
    出处:http://blog.xiazdong.info
    本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。
  • 相关阅读:
    Java实现 蓝桥杯 算法训练 画图(暴力)
    Java实现 蓝桥杯 算法训练 画图(暴力)
    Java实现 蓝桥杯 算法训练 相邻数对(暴力)
    Java实现 蓝桥杯 算法训练 相邻数对(暴力)
    Java实现 蓝桥杯 算法训练 相邻数对(暴力)
    Java实现 蓝桥杯 算法训练 Cowboys
    Java实现 蓝桥杯 算法训练 Cowboys
    55. Jump Game
    54. Spiral Matrix
    50. Pow(x, n)
  • 原文地址:https://www.cnblogs.com/xiazdong/p/3058362.html
Copyright © 2011-2022 走看看