posts - 48,  comments - 5,  trackbacks - 0
 

jsp+javabean实现分页

此分页程序只用到三个文件test.jsp(用于显示分页结果的JSP页面)Pagination.java(用于封装分页程序)DBConnect.java(用于连接SqlServer 2000数据库的JAVA类),和一个简单数据库user的表username,测试用的web发布服务器为Tomcat 5.5.20).而且DBConnect.javaPagination.java放在WEB-INF下的classes目录下(注意,如果没有的话就新建一个),数据库用的是SqlServer 2000

1create database username ----------建立数据库username
  create table
username (name varchar(25));---------建立数据表username有一个字段name类型是字符型( 有关sql的操作请注意:   D:\学习资料\SQL server\课件\逍湘 SQL大全.doc  的数据库方面知识.)

2DBConnect.java---------------用于连接sqlserver 2000数据库

package bean;

 

import java.sql.*;

/**

 * 数据库连接类---(JDBC)

 * @author 逍湘

 *

 */

 

public class DBConnect{

       String drivename="com.microsoft.jdbc.sqlserver.SQLServerDriver";//设置驱动变量

       String URL="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=user";//创建连接,数据库名user

       String user ="sa";           //这里替换成你自已的数据库用户名

       String password = "123";    //这里替换成你自已的数据库用户密码

       Connection conn=null;

       ResultSet rs=null;

/**

 * 构造方法创建数据库连接 *

 */   

public DBConnect(){ 

       try{

               Class.forName(drivename);// 创建数据库驱动

               conn=DriverManager.getConnection(URL,user,password);//创建连接

           }

           catch(java.lang.ClassNotFoundException e){

               System.out.println("Jdbc_conn():"+e.getMessage());

           }

           catch(SQLException ex){

               System.out.println("sql.executeUpdate:"+ex.getMessage());

           }

       }

/**

 * 数据更新方法

 * @param sql

 * @throws Exception

 */

          public void executeUpdate(String sql) throws Exception{

           sql=new String(sql.getBytes("GBK"),"ISO8859_1");// 字符的转换

           try{

              

               Statement stmt=conn.createStatement();

               stmt.executeUpdate(sql);

               conn.close();

               stmt.close();

           }

           catch(SQLException ex){

               System.out.println("sql.executeUpdate:"+ex.getMessage());

           }

       }

/**

 * 数据查询方法

 * @param sql

 * @return

 * @throws Exception

 */

       public ResultSet executeQuery(String sql)throws Exception{

           rs=null;

           sql=new String(sql.getBytes("GBK"),"ISO8859_1");// 字符的转换

           try{

                         

               Statement stmt=conn.createStatement();// 数据操作对象

               rs=stmt.executeQuery(sql);//执行sql

               //conn.close();// 关闭连接

               //stmt.close();// 关闭对象

           }

           catch(SQLException ex){

               System.out.println("sql.executeQuery:"+ex.getMessage());

           }

           return rs;

       }

/**

 * 测试

 * @param args

 */   

public static void main(String args[]){

    try{

       ResultSet rs_count=new DBConnect().executeQuery("select count(*) as t from username");//传递进数据库处理的javabean

       rs_count.next();

       int resultconts=rs_count.getInt("t");//取得总的数据数

       System.out.print(resultconts);

    }catch(Exception ex){

        System.out.println("sql.executeQuery:ok"+ex.getMessage());

    }

}

      

    }

 

Pagination.java封装分页类,在test.jsp里显示

3Pagination.java--------封装分页的类

package bean;

 

 

import java.sql.*;

import javax.servlet.http.*;

/**

 * 封装分页程序

 * @author  逍湘

 *

 */

public class  Pagination{

   private String strPage = null;// page参数变量

   private int current_Pages;//当前页数

   private int page_record; //设置每页显示记录数

   private int total_Pages;// 总页数

  

 /**

  * 取得xxx.jsp页面文件里的xxx.jsp?page=<%=current_Pages-1%>或是page=<%=current_Pages+1%>的值给变量strPage

  * @param request

  * @param page  为跳转到的页号

  * @return  strPage

  */ 

   public String strPage(HttpServletRequest request, String page){

      try{

       strPage = request.getParameter(page);// request对象取得page的值

      }

      catch(Exception e){

           System.out.println("delcolumn"+e.getMessage());   

      }

      return strPage;

   }

/**

 * 设置要显示的当前页数

 * @param strPage

 * @return current_Pages(返回页面数)

 */

   public int current_Pages(String strPage){

       try{

           if(strPage == null){   // 默认没有就设置是第一页

               current_Pages = 1;

           }

           else{

               current_Pages = Integer.parseInt(strPage);// 取得strPage的整数值

               if(current_Pages < 1)    // 如果小于1,同样返回是第一页

                   current_Pages = 1;

           }

       }

       catch(Exception e){

           System.out.print("current_Pages");

       }

       return current_Pages;// 返回页面数

   }

/**

 * @param page_record 设置每页要显示的记录数

 */   

   public void setPage_record(int page_record){

       this.page_record=page_record;

   }

/**

 * 取得总页数

 * @param total_record 总记录数(查询数据库获得)

 * @return total_Pages 返回总页数

 */  

   public int getTotal_Pages(int total_record){

       int test;// 变量

       test=total_record%page_record;// 取得余数

       if(test==0)

           total_Pages = total_record/page_record;// 每页显示的整数

           else

           total_Pages=total_record/page_record+1;// 不是整数就加一

       return total_Pages;

   }

   /**

    * 结果集的返回

    * @param rs 结果集

    * @param current_Pages 页数

    * @return rs 结果集

    */

   public ResultSet getPageSet(ResultSet rs,int current_Pages){

       if(current_Pages==1){

           return rs;// 如果就一页,就返回这个rs

       }

       else{

           int i=1;

           try{

               while(rs.next()){

                   i=i+1;

                   if(i>((current_Pages-1)*page_record))

                       break;// 退出

               }

               return rs;// 从退出开始将结果集返回

           }

           catch(Exception e){

               System.out.print(e.getMessage());

           }

       }

       return rs;

   }

}
4.test.jsp --------显示页面
<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>

<%@ page import="java.sql.*"%>

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>

  <head>

    <title>分页显示</title>

 

    <meta http-equiv="pragma" content="no-cache">

    <meta http-equiv="cache-control" content="no-cache">

    <meta http-equiv="expires" content="0">   

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">

    <meta http-equiv="description" content="This is my page">

    <!--

    <link rel="stylesheet" type="text/css" href="styles.css">

    -->

 

  </head>

 

  <body>

<jsp:useBean id="m_pages" scope="page" class="bean.Pagination"></jsp:useBean>

<jsp:useBean id="sql" scope="page" class="bean.DBConnect"/>

<%

   int curPages = m_pages.current_Pages(m_pages.strPage(request,"page"));

   m_pages.setPage_record(10);//设置每页显示10

%>

<%

   ResultSet rs_count=sql.executeQuery("select count(*) as t from username");//传递进数据库处理的javabean

   rs_count.next();

   int resultconts=rs_count.getInt("t");//取得总的数据数

   int totalPages = m_pages.getTotal_Pages(resultconts);//取出总页数

   ResultSet rs=m_pages.getPageSet(sql.executeQuery("select * from username"),curPages);//获取指针的结果集参数是(结果集,页数)

%>

   <p>分类表</p>

   <table border="1">

   <tr>

   <td>姓名</td>

   </tr>

   <%int i=1;%>

   <%while (rs.next()){%>

   <tr>

   <!-- <td> <%-- <%=rs.getString("id")%> --%> </td> -->

   <td><%=rs.getString("name")%>  </td>

   </tr>

   <%

   i=i+1;

   if(i>10)

       break;

   }

   %>

   </table>

   <p align="center"><%if(curPages>1){%><a href="test.jsp?page=<%=curPages-1%>">上一页</a><%}%><%if(curPages<totalPages){%><a href="test.jsp?page=<%=curPages+1%>">下一页</a><%}%></p>

 

  </body>

</html>

 

 

posted on 2008-01-05 10:55 逍湘 阅读(1990) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航:
 

留言簿(2)

随笔档案(49)

文章档案(17)

最新随笔

积分与排名

  • 积分 - 25761
  • 排名 - 1500

最新评论

阅读排行榜