• 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>


  • 相关阅读:
    设计模式与23种设计模式的简单介绍
    一文读懂C++ Vector在算法竞赛中的常见用法
    一文读懂C++ String类在算法竞赛中的常见用法
    GO语言的单元测试与性能测试
    变量提升和函数提升及二者优先级
    闭包
    读《你不知道的JavaScript 中》-异步【3】Promise
    js数组方法-改变原数组和不改变原数组
    读《你不知道的JavaScript 中》-异步【2】回调
    组合类算法问题
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4004384.html
Copyright © 2020-2023  润新知