JSP  实现数据的分页显示
在JSP中,数据的分页显示非常实用,它的应用可以使数据表中的多条数据实现分页显示,使数据的显示更加条理清晰。本扩展练习的目的是:使数据表bookinfo中的数据实现分页显示,并实现数据的翻页功能。实例中有两个文件Pagescount.jsp和Pages.jsp,其中Pagescount.jsp实现数据库的连接并查询数据返回数据集,同时设置每页显示的记录数和计算数据页数。Pages.jsp实现数据的分页显示。
(1)创建一个命名为Pagescount.jsp的信息查询页面。【新建】|【JSP (advanced Templates)】命令,弹出【新建JSP页面】对话框,在对话框的文件名称中输入Pagescount.jsp,单击【完成】按钮。
(2)添加JSP文件要用到的Java类包、编码。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
(3)在JSP文件中输出如下内容并保存。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page    import="java.sql.*" %>
<%!
int PageSize = 3; //设置每张网页显示记录数
int ShowPage = 1; //设置欲显示的页数
int RowCount = 0; //ResultSet的记录笔数
int PageCount = 0; //ResultSet分页后的总页数
Connection conn = null;
Statement st = null;
ResultSet rs = null;
public void jspInit() //执行数据库与相关数据的初始化
{   
    try{
    // 加载驱动
    Class.forName("sql.jdbc.Driver").newInstance();分页预览
    String url = "jdbc:mysql://localhost:3306/testdb";
    String user = "root";
    String password = "123";
    conn = Connection(url, user,password);
    //创建用于将 SQL 语句发送到数据库的 SQLServerStatement 对象。
    st = ateStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
//建立ResultSet(结果集)对象,并执行SQL语句
    rs = st.executeQuery("SELECT * FROM bookinfo");   
    rs.last(); //将指标移至最后一笔记录
    RowCount = rs.getRow(); //取得ResultSet中记录数
    //计算显示的页数   
    PageCount = ((RowCount % PageSize) == 0 ? (RowCount/PageSize) : (RowCount/PageSize)+1);
    }
    catch(Exception ex){   
        System.out.String());
    }
}
public void jspDestroy(){  //执行关闭各种对象的操作
    try{
        rs.close(); //关闭ResultSet对象
        st.close(); //关闭Statement对象
        conn.close(); //关闭数据库链接对象
    }
    catch(Exception ex){
        System.out.String());
    }
}
%>
在上述代码中,首先设置了每页显示的记录数,然后加载驱动程序连接数据库查询bookinfo数据表中数据并返回数据集,最后,计算数据集中的记录数并设置显示的页数。
(4)创建一个命名为Pages.jsp的信息查询页面。【新建】|【JSP (advanced Templates)】命令,弹出【新建JSP页面】对话框,在对话框的文件名称中输入Pages.jsp,单击【完成】按钮。
(5)添加JSP文件要用到的Java类包、编码。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.sql.*" %>
(6)在JSP文件中输出如下内容并保存。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page    import="java.sql.*" %>
<%@ include file="PagesCount.jsp" %>
<HTML><HEAD><TITLE>分页显示</TITLE></HEAD>
<BODY>
<CENTER><FONT SIZE = 5 COLOR = blue>数据的分页显示</FONT></CENTER>
<BR><HR><BR><CENTER>
<%
String ToPage = Parameter("ToPage");
if(ToPage != null) {  //判断是否可正确取得ToPage参数
    ShowPage = Integer.parseInt(ToPage);  //取得指定显示的分页页数
    if(ShowPage > PageCount) {  //下面的if语句将判断用户输入的页数是否正确
        ShowPage = PageCount;  //判断指定页数是否大于总页数, 是则设置显示最后一页
    }
    else if(ShowPage <= 0){
        ShowPage = 1;  //若指定页数小于0, 则设置显示第一页的记录
    }
}
rs.absolute((ShowPage - 1) * PageSize + 1);  //计算欲显示页的第一笔记录位置
%>
<H3>当前在第<FONT SIZE = 4 COLOR = red>
<%= ShowPage %></FONT>页, 共
<FONT SIZE = 4 COLOR = red>
<%= PageCount %></FONT>页</H3><BR>   
<%
//利用For循环配合PageSize属性输出一页中的记录
for(int i = 1; i <= PageSize; i++){
    %>
        <TABLE border=1 bordercolor=#0066FF bgcolor=#FEFEE9 cellpadding=5>
        <TR><TD bgcolor=#E9E9F3 width= 100 height=30>
        <B>图书编号</B></TD>
        <TD width= 50><B><%= rs.getString(1) %>
        </B></TD>
        <TD bgcolor=#E9E9F3 width= 100>
        <B>图书名称</B></TD>
        <TD width= 200><B><%= rs.getString(2) %>
        </B></TD>
        <TD bgcolor=#E9E9F3 width= 80>
        <B>库存量</B></TD>
        <TD width= 90><B><%= rs.getString(3) %>
        </B></TD>
        <TD bgcolor=#E9E9F3 width= 80>
        <B>价  格</B></TD>
        <TD width= 100><B><FONT SIZE = 4 COLOR = red><B>
        <%= rs.getDouble(4) %>
        </B></FONT></TD></TR></TABLE><br>
    <%
    //下面的if判断语句用于防止输出最后一页记录时,
    //将记录指标移至最后一笔记录之后
    if(!rs.next())    //判断是否到达最后一笔记录
        break;  //跳出for循环
}
%>
<TABLE><TR valign=baseline align=center>
<%
//判断目前所在分页是否为第一页,
//不是则显示到第一页与上一页的超链接
if(ShowPage != 1)
{
//下面建立的各超链接将链接至自己,
//并将欲显示的分页以ToPage参数传递给自己
    %>
    <TD Width=150>
    <A Href=Pages.jsp?ToPage=<%= 1 %>>到第一页</A>
    </TD><TD Width=150>
    <A Href=Pages.jsp?ToPage=<%= ShowPage - 1 %>>到上一页</A>
    </TD>
    <%
}
//判断目前所在分页是否为最后一页,
//不是则显示到最后一页与下一页的超链接
if(ShowPage != PageCount)
{
//下面建立的各超链接将链接至自己,
//并将欲显示的分页以ToPage参数传递自己
    %>   
    <TD Width=150>
    <A Href=Pages.jsp?ToPage=<%= ShowPage + 1%>>到下一页</A>
    </TD> 
    <TD Width=150>
    <A Href=Pages.jsp?ToPage=<%= PageCount %>>到最后一页</A>
    </TD>
    <%
}
%>
<TD Width=150>
<FORM action=Pages.jsp method=POST>到
<INPUT type="text" name=ToPage value=<%= ShowPage%> > 页
</FORM></TD></TR></TABLE></CENTER></BODY></HTML>