Jsp分页技术直接分页的简单方法

Jsp分页技术直接分页的简单方法

调试环境和使用软件

本次实验使用的是Eclipse平台,服务器使用的是tomcat v7.0,数据库使用的是SQL。

1.直接分页的优缺点

1.优点:直观,易于理解,并且比较灵活,代码比较简单。

2.缺点:这种方式只适合对单一的或极少量的结果集进行分析,实现代码不能够被重用,不适合用于实现数据量大、数据表多的结果集的分页。

2.基本代码

<%@ page contentType="text/html;charset=UTF-8"%>



<%

   java.sql.Connection sqlCon; //数据库连接对象

   java.sql.Statement sqlStmt; //SQL语句对象

   java.sql.ResultSet sqlRst;  //结果集对象



   java.lang.String strCon;    //数据库连接字符串

   java.lang.String strSQL;    //SQL语句



   int intPageSize;           //一页显示的记录数

   int intRowCount;           //记录总数

   int intPageCount;          //总页数

   int intPage;               //待显示页码



   java.lang.String strPage; 



   int i;



   //设置一页显示的记录数

   intPageSize = 10;



   //取得待显示页码

   strPage = request.getParameter("page");



   if(strPage==null){

       //表明在QueryString中没有page这一个参数,此时显示第一页数据

       intPage = 1;

   } else {

       //将字符串转换成整型

       intPage =java.lang.Integer.parseInt(strPage);

       if(intPage<1) intPage = 1;

   }





   //装载JDBC驱动程序

   Class.forName("com.mysql.jdbc.Driver").newInstance();  

   String username = "root"; //用户名

   String password = "123"; //密码

   String url="jdbc:mysql://localhost:3306/sys";

   //连接数据库

   sqlCon=java.sql.DriverManager.getConnection(url,username,password);

   //创建语句对象

   sqlStmt =sqlCon.createStatement(java.sql.ResultSet.TYPE_SCROLL_INSENSITIVE,java.sql.ResultSet.CONCUR_READ_ONLY);

   //创建查询语句

   strSQL = "select * from dic";

   //执行SQL语句并获取结果集

   sqlRst = sqlStmt.executeQuery(strSQL);



   //获取记录总数

   sqlRst.last();

   intRowCount = sqlRst.getRow();

   //记算总页数

   intPageCount = (intRowCount+intPageSize-1) /intPageSize;

   //调整待显示的页码

   if(intPage>intPageCount) intPage = intPageCount;

%>





<html>



    <head>

        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

        <title>数据分页显示</title>

    </head>



    <body>

        <center><table border=1 cellspacing=0 cellpadding=0>

            <tr>

               <td align=center width=100% colspan=5 bgcolor=#3399ff>

                    <font color=#ffffff>成员列表</font>

               </td>

            </tr>

            <tr>

                <th>单词</th>

                <th>词性</th>

                <th>汉语示意</th>

            </tr>



            <% if(intPageCount>0) {

                   //将记录指针定位到待显示页的第一条记录上

                   sqlRst.absolute((intPage-1)* intPageSize + 1);

                   //显示数据

                   i = 0;

                   while(i<intPageSize &&!sqlRst.isAfterLast()){

            %>



            <tr>

                <td> <%= sqlRst.getString(1) %> </td>

                <td> <%= sqlRst.getString(2) %> </td>

                <td> <%= sqlRst.getString(3) %> </td>

            </tr>



            <% sqlRst.next();

               i++;

               }

               }

            %>

        </table></center><br>



    <center><%=intPage%>页 共<%=intPageCount%><% //以下是分页的“上一页”“下一页”,有上一页就有链接,没有就为文字,下一页同理%>

        <% if(intPage>1){ %>

            <a href="NewFile.jsp?page=<%=intPage-1%>">上一页</a>

        <% }else{ %>

            上一页

        <%}%>



        <% if(intPage<intPageCount){ %>

            <a href="NewFile.jsp?page=<%=intPage+1%>">下一页</a>

        <% }el 
e{ %>

            下一页

        <%}%>

     <center>

    </body>



</html>



<%

   //关闭结果集

   sqlRst.close();

   //关闭SQL语句对象

   sqlStmt.close();

   //关闭数据库

   sqlCon.close();

%>

3. 关键语句说明

   if(s 
 tr     
ag   
= 
null){

       //表明在QueryString中没有page这一个参数,此时显示第一页数据

       intPage = 1;

   } else {

       //将字符串转换成整型

       intPage =java.lang.Integer.parseInt(strPage);

       if(intPage<1) intPage = 1;

   }

这个语句用于判断打开网页是所处的页码数。如果为空,打开第一页。

        <% //以下是分页的“上一页”“下一页”,有上一页就有链接,没有就为文字,下一页同理%>

        <% if(intPage>1){ %>

            <a href="NewFile.jsp?page=<%=intPage-1%>">上一页</a>

        <% }else{ %>

            上一页

        <%}%>



,![这里写图片描述](//img-blog.csdn.net/20180321221203197?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMTYyNzk3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70,![这里写图片描述](//img-blog.csdn.net/20180321221225501?watermark/2/text/Ly9ibG9nLmNzZG4ubmV0L3FxXzQwMTYyNzk3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)        <% if(intPage<intPageCount){ %>

            <a href="NewFile.jsp?page=<%=intPage+1%>">下一页</a>

        <% }else{ %>

            下一页

        <%}%>

这个语句用于上下页跳转,其中关键是 a href 语句,程序中的语句用于单机上一页或下一页中使用,单机之后跳转并且页数加以或减一,另外加了一个if语句用于判断是否已经是最后一页或者第一页。
,

4. 运行结果

这里写图片描述

这里写图片描述

已标记关键词 清除标记
相关推荐
package com; public class Pager { private int totalRows = 0; // 记录总数 private int totalPages = 0; // 总页数 private int pageSize = 10; // 每页显示数据条数,默认为10条记录 private int currentPage = 1; // 当前页数 private boolean hasPrevious = false; // 是否有上一页 private boolean hasNext = false; // 是否有下一页 public int getSearchFrom() { return (currentPage - 1) * pageSize; } public Pager() { } public void init(int totalRows) { this.totalRows = totalRows; this.totalPages = ((totalRows + pageSize) - 1) / pageSize; refresh(); // 刷新当前页面信息 } /** * * @return Returns the currentPage. * */ public int getCurrentPage() { return currentPage; } /** * * @param currentPage * current page * */ public void setCurrentPage(int currentPage) { this.currentPage = currentPage; refresh(); } /** * * @return Returns the pageSize. * */ public int getPageSize() { return pageSize; } /** * * @param pageSize * The pageSize to set. * */ public void setPageSize(int pageSize) { this.pageSize = pageSize; refresh(); } /** * * @return Returns the totalPages. * */ public int getTotalPages() { return totalPages; } /** * * @param totalPages * The totalPages to set. * */ public void setTotalPages(int totalPages) { this.totalPages = totalPages; refresh(); } /** * * @return Returns the totalRows. * */ public int getTotalRows() { return totalRows; } /** * * @param totalRows * The totalRows to set. * */ public void setTotalRows(int totalRows) { this.totalRows = totalRows; refresh(); } // 跳到第一页 public void first() { currentPage = 1; this.setHasPrevious(false); refresh(); } // 取得上一页(重新设定当前页面即可) public void previous() { if (currentPage > 1) { currentPage--; } refresh(); } // 取得下一页 public void next() { //System.out.println("next: totalPages: " + totalPages + " currentPage : " + currentPage); if (currentPage < totalPages) { currentPage++; } refresh(); } // 跳到最后一页 public void last() { currentPage = totalPages; this.setHasNext(false); refresh(); } public boolean isHasNext() { return hasNext; } /** * * @param hasNext * The hasNext to set. * */ public void setHasNext(boolean hasNext) { this.hasNext = hasNext; } public boolean isHasPrevious() { return hasPrevious; } /** * * @param hasPrevious * The hasPrevious to set. * */ public void setHasPrevious(boolean hasPrevious) { this.hasPrevious = hasPrevious; } // 刷新当前页面信息 public void refresh() { if (totalPages <= 1) { hasPrevious = false; hasNext = false; } else if (currentPage == 1) { hasPrevious = false; hasNext = true; } else if (currentPage == totalPages) { hasPrevious = true; hasNext = false; } else { hasPrevious = true; hasNext = true; } } }
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页