zoukankan      html  css  js  c++  java
  • JSP分页实现(Javabean+JSP)

    本例实现jsp分页,可设定最大显示页数,每页显示条目数,在选取页码时到数据库中取相应页码内容并显示。

    databaseBean类为分页中的数据库操作bean,包含数据库连接,查询结果,得到结果页数,返回指定页码内容的结果集等功能。

    后面给出测试jsp页面。

    分页相关数据库操作bean
    package com.test.bean;

    import java.sql.*;

    public class databaseBean {

        
    // 数据库连接字符串
        private String DBLocation = "jdbc:mysql://localhost:3306/test?user=root&password=root&useUnicode=true&characterEncoding=GB2312";

        
    // 数据库连接驱动
        private String DBDriver = "com.mysql.jdbc.Driver";

        
    // 数据库连接
        private Connection conn = null;

        
    public databaseBean() {
        }

        
    public String getDBLocation() {
            
    return (DBLocation);
        }

        
    public void setDBLocation(String location) {
            DBLocation 
    = location;
        }

        
    public String getDBDriver() {
            
    return (DBDriver);
        }

        
    public void setDBDriver(String driver) {
            DBDriver 
    = driver;
        }

        
    public Connection getconn() {
            
    return (conn);
        }

        
    public void setconn(Connection conn) {
            
    this.conn = conn;
        }

        
    /**
         * 建立连接
         * 
         * 
    @return 连接建立状态
         
    */
        
    public String DBConnect() {
            String strExc 
    = "Success!";

            
    try {
                Class.forName(DBDriver);
                conn 
    = DriverManager.getConnection(DBLocation);
            } 
    catch (ClassNotFoundException e) {
                strExc 
    = "数据库驱动没有找到,错误提示:<br>" + e.toString();
            } 
    catch (SQLException e) {

                strExc 
    = "sql语句错误,错误提示<br>" + e.toString();
            } 
    catch (Exception e) {
                strExc 
    = "错误提示:<br>" + e.toString();
            }

            
    return (strExc);
        }

        
    /**
         * 断开连接
         * 
         * 
    @return 连接断开状态
         
    */
        
    public String DBDisconnect() {
            String strExc 
    = "Success!";

            
    try {
                
    if (conn != null)
                    conn.close();
            } 
    catch (SQLException e) {
                strExc 
    = e.toString();
            }

            
    return (strExc);
        }

        
    /**
         * 通过传入sql语句来返回一个结果集
         * 
         * 
    @param sql
         *            sql查询语句
         * 
    @return 查询结果集
         * 
    @throws SQLException
         * 
    @throws Exception
         
    */
        
    public ResultSet query(String sql) throws SQLException, Exception {

            ResultSet rs 
    = null;

            
    if (conn == null) {
                DBConnect();
            }

            
    if (conn == null) {
                rs 
    = null;
            } 
    else {
                
    try {
                    Statement s 
    = conn.createStatement();
                    rs 
    = s.executeQuery(sql);
                } 
    catch (SQLException e) {
                    
    throw new SQLException("Cound not execute query.");
                } 
    catch (Exception e) {
                    
    throw new Exception("Cound not execute query.");
                }
            }

            
    return (rs);
        }

        
    /**
         * 执行sql语句,并返回结果的页数
         * 
         * 
    @param sql
         *            sql查询语句
         * 
    @param pageSize
         *            每页所显示的结果数目
         * 
    @return 总页数
         
    */
        
    public int getTotalPage(String sql, int pageSize) {

            ResultSet rs 
    = null// 查询后的结果集
            int totalRows = 0// 结果集中条目数
            int pages = 0// 总页数

            
    if (conn == null) {
                DBConnect();
            }

            
    if (conn == null) {
                rs 
    = null;
            } 
    else {
                
    try {
                    Statement s 
    = conn.createStatement();

                    rs 
    = s.executeQuery(sql);
                    
    while (rs.next())
                        totalRows
    ++;
                } 
    catch (SQLException e) {
                }
                pages 
    = ((totalRows - 1/ pageSize + 1);
                rs 
    = null;
            }
            
    return pages;
        }

        
    /**
         * 得到指定页码的查询结果集
         * 
         * 
    @param sql
         *            sql查询语句
         * 
    @param pageSize
         *            每页显示的条目数
         * 
    @param pageNumber
         *            页码
         * 
    @return 查询结果集
         
    */
        
    public ResultSet getPagedRs(String sql, int pageSize, int pageNumber) {
            ResultSet rs 
    = null;
            
    int absoluteLocation;
            
    if (conn == null) {
                DBConnect();
            }

            
    if (conn == null) {
                rs 
    = null;
            } 
    else
                
    try {
                    Statement s 
    = conn.createStatement();

                    
    // 计算出最后一行结果的编号,
                    
    // 任何编号大于这个maxrows的结果都会被drop
                    s.setMaxRows(pageSize * pageNumber);

                    rs 
    = s.executeQuery(sql);
                } 
    catch (SQLException e) {
                }

            
    // 计算出上一页最后一个结果的编号
            absoluteLocation = pageSize * (pageNumber - 1);

            
    try {

                
    //让结果集rs定位到本页之前的最后一个结果处
                for (int i = 0; i < absoluteLocation; i++) {
                    rs.next();
                }
            } 
    catch (SQLException e) {
            }
            
            
    // 返回该页要显示的结果
            return (rs);

        }

        
    /**
         * 执行sql语句
         * 
         * 
    @param sql
         *            sql查询语句
         * 
    @return 标识状态的字符串
         
    */
        
    public String execute_sql(String sql) {
            String strExc 
    = "Success!";

            
    if (conn != null) {
                
    try {
                    PreparedStatement update;
                    update 
    = conn.prepareStatement(sql);
                    update.execute();
                } 
    catch (SQLException e) {
                    strExc 
    = e.toString();
                } 
    catch (Exception e) {
                    strExc 
    = e.toString();
                }
            } 
    else {
                strExc 
    = "Connection Lost!";
            }
            
    return (strExc);

        }
    }
    测试分页jsp
    <%@ page contentType="text/html;charset=gb2312"%>
    <%@ page import="java.util.*"%>
    <%@ page import="java.sql.*"%>

    <jsp:useBean id="basicDB" class="com.test.bean.databaseBean"
        scope
    ="page" />
    <%
        
    String sql; //sql语句
        ResultSet rs; 
    //结果集    
        
    int id; //记录的id
        
    String reply, Exc;

        Exc 
    = basicDB.DBConnect(); //建立连接,若成功,则返回Success!若失败,则返回相应出错信息

        
    if (!Exc.equals("Success!")) {
            basicDB.DBDisconnect();
            throw 
    new Exception(Exc);
        }

        
    int pageSize = 10//每页显示的数据条数
        
    int currentPage = 1//初始显示页的页码
        
    int allPage = -1//总页码数
        
    String pages = request.getParameter("pages"); //取得页面中pages参数,此参数代表要显示的“当前页面”
        
    if (pages != null)
            currentPage 
    = Integer.valueOf(pages).intValue(); //获取待显示的当前页面的页码

        sql 
    = "select * from userinfo order by id asc";
        allPage 
    = basicDB.getTotalPage(sql, pageSize); //得到总页码数
        rs 
    = basicDB.getPagedRs(sql, pageSize, currentPage); //得到当前页面要显示的结果集
    %>

    <table border="0" cellspacing="1" cellpadding="3" width="590" bgcolor="#ffffff">
        
    <%
            
    while (rs.next()) {
                id 
    = rs.getInt("id");//得到数据库(结果集)中id编号
        
    %>
        
    <tr bgcolor="#FF6600" style="color: white">
            
    <td>
                Name:
    <%=rs.getString("name")%></td>
            
    <td>
                Password:
    <%=rs.getString("password")%></td>
        
    </tr>
        
    <%
            }
        
    %>
        
    <tr>
            
    <td height="1"></td>
        
    </tr>
        
    <tr>
            
    <td colspan=4 align=right bgcolor="#FF6600" style="color: white;">
                现在是第
    <%=currentPage%>页,
                
    <%
                
    if (currentPage > 1) {
            
    %>
                
    <!--如果不在第一页,则显示出“首页”链接-->
                
    <HREF="admin_show.jsp?pages=<%=(currentPage - 1)%>">首页</A>
                
    <%
                    }
                    
    for (int i = 1; i <= allPage; i++) {
                        
    //显示出1、234……到最后一页的链接
                        out.println(
    "<a href=admin_show.jsp?pages=" + i + ">" + i
                                
    + "</a>");
                    }
                
    %>
                
    <%
                    
    if (currentPage < allPage) {
                
    %>
                
    <!--如果不在最后一页,则显示出“末页”链接-->
                
    <HREF="admin_show.jsp?pages=<%=(currentPage + 1)%>">末页</A>
                
    <%
                    }
                
    %>
            
    </td>
        
    </tr>
    </table>

     参考:http://blog.csdn.net/bingki/archive/2008/09/24/2975008.aspx

  • 相关阅读:
    Python error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat)解决方案
    3-Longest Substring Without Repeating Characters @LeetCode
    2-Add Two Numbers @LeetCode
    1-Two Sum @LeetCode
    DES原理及代码实现
    Linux网络篇,ssh原理及应用
    虚拟机如何通过“仅主机”模式上网
    MySQL入门,第八部分,多表查询(二)
    MySQL入门,第八部分,多表查询(一)
    MySQL入门,第七部分,单表查询
  • 原文地址:https://www.cnblogs.com/myparamita/p/1504945.html
Copyright © 2011-2022 走看看