Ajax的常用技巧---实现数据库分页

Ajax的常用技巧---实现数据库分页

在浏览网页时,经常会看到分页显示的页面。如果想把大量的数据提供给浏览者,分页显示是个非常实用的方法。分页显示数据能够帮助浏览者更好地查看信息,能够有条理的显示信息。
在传统的web技术中,分页显示的相关操作都是在服务器端进行的,服务器端获取客户端的请求分页,并根据请求页数获取指定的结果集。最后把结果集中的数据返回到客户端,这时返回结果中不但包含了数据,还可能包含了数据的显示样式。客户端的每一次数据更新,都会重新打开一个网页,如果网页中包含了很多html元素,就会造成网页打开速度较慢的情况。
为了显示部分数据,而需要加载整个页面的数据,显得有点得不偿失。使用Ajax技术可以很好的弥补这些问题,服务器端只传输数据库表中的数据,客户端获取这些数据只更新局部内容,与数据无关的其他元素保持不变。
现在创建一个实例,以演示使用Ajax技术实现数据的分页显示。该实例的代码实现分为服务器端和客户端。

1,准备工作


我们这里使用Mysql数据库,我在shop数据库中创建了一张mobileshop表,这张表有两个字段name,model。
打开记事本,输入下列代码:

<% @ page language = " java "  import = " java.util.*,java.sql.*,java.io.* "  pageEncoding = " GBK " %>
<%
 class DBManager{
     
String  userName = " root " ;
    
String  password = " 123456 " ;
    Connection conn
= null ;
    Statement stmt
= null ;
    
String  url = " jdbc:mysql://localhost:3306/shop " ;
    ResultSet rst;
public  DBManager( String  sql){

    try {
        Class.forName(
" com.mysql.jdbc.Driver " );
        conn
= DriverManager.getConnection(url,userName,password);
        stmt
= conn.createStatement();
        rst
= stmt.executeQuery(sql);
    } catch (Exception e) {
        
//  TODO Auto - generated catch block
        e.printStackTrace();
    }    
}
public  ResultSet getResultSet(){
return rst;
}
}

%>

将上述代码保存为Conn.jsp,用于返回查询结果集。

2,服务器端代码


     在本实例中,服务器端代码具有获取客户端请求页数和产生指定记录集的功能。打开记事本,输入下列代码:


<% @ page contentType = " text/html; charset=utf-8 "  import = " java.sql.* "  errorPage = ""   %>
<% @ include file = " Conn.jsp "   %>
<% @ page import = " java.util.* "   %>
<% @ page import = " java.io.* "   %>
<%
 try
 {
ResultSet rs
= new  DBManager( " select name,model from mobileshop " ).getResultSet();
int  intPageSize;       // 一页显示的记录数
int  intRowCount;       // 记录的总数
int  intPageCount;      // 总页数
int  intPage;          // 待显示的页码
String  strPage;
int  i;
intPageSize
= 2 ;        // 设置一页显示的记录数
strPage
= request.getParameter( " page " );          // 取得待显示的页码
if (strPage == null )              // 判断strPage是否等于null,如果是,则显示第一页数据
{
intPage
= 1 ;
}
else {
intPage
= java.lang.Integer.parseInt(strPage);    // 将字符串转化为整形
}
if (intPage < 1 )
{
intPage
= 1 ;
}
// 获取记录总数
rs.last();
intRowCount
= rs.getRow();
// 计算总页数
intPageCount
= (intRowCount + intPageSize - 1 ) / intPageSize;
// 调整显示的页码
if (intPage > intPageCount) intPage = intPageCount;
if (intPageCount > 0 )
{
// 将记录指针定位到待显示页的第一条记录上
rs.absolute((intPage
- 1 ) * intPageSize + 1 );
}
// 下面用于显示数据
i
= 0 ;
  StringBuffer content
= new  StringBuffer( "" ); 
  response.setContentType(
" text/xml " ); 
  response.setHeader(
" Cache-Control " , " no-cache " );
  content.append(
" <?xml version=\ " 1.0 \ "    encoding=\ " UTF - 8 \ "  ?> " );
  content.append(
" <contents> " );
while (i < intPageSize  &&  !rs.isAfterLast())
{
     
     
String  name = rs.getString( " name " );
     
String  email = rs.getString( " model " );
     content.append(
" <content> " );
     content.append(
" <name> " +  name  + " </name> " );
     content.append(
" <model> " + email + " </model> " );
     content.append(
" </content> " );
 rs.next();
 i
++ ;
 }
 content.append(
" </contents> " );
 System.out.print(content);
 out.print(content);
 }
 catch(Exception e)
 {
 e.printStackTrace();
 }
 
%>



更多信息请访问 java教程网 www.itchm.com

你可能感兴趣的:(Ajax的常用技巧---实现数据库分页)