在浏览网页时,经常会看到分页显示的页面。如果想把大量的数据提供给浏览者,分页显示是个非常实用的方法。分页显示数据能够帮助浏览者更好地查看信息,能够有条理的显示信息。
在传统的web技术中,分页显示的相关操作都是在服务器端进行的,服务器端获取客户端的请求分页,并根据请求页数获取指定的结果集。最后把结果集中的数据返回到客户端,这时返回结果中不但包含了数据,还可能包含了数据的显示样式。客户端的每一次数据更新,都会重新打开一个网页,如果网页中包含了很多html元素,就会造成网页打开速度较慢的情况。
为了显示部分数据,而需要加载整个页面的数据,显得有点得不偿失。使用Ajax技术可以很好的弥补这些问题,服务器端只传输数据库表中的数据,客户端获取这些数据只更新局部内容,与数据无关的其他元素保持不变。
现在创建一个实例,以演示使用Ajax技术实现数据的分页显示。该实例的代码实现分为服务器端和客户端。
1,准备工作
我们这里使用Mysql数据库,我在shop数据库中创建了一张mobileshop表,这张表有两个字段name,model。
打开记事本,输入下列代码:
Connection conn=null;
Statement stmt=null;Stringurl="jdbc:mysql://localhost:3306/shop";
ResultSet rst;publicDBManager(Stringsql){
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();
}
}publicResultSet getResultSet(){
return rst;
}
}%>
将上述代码保存为Conn.jsp,用于返回查询结果集。
2,服务器端代码
在本实例中,服务器端代码具有获取客户端请求页数和产生指定记录集的功能。打开记事本,输入下列代码:
{
ResultSet rs=newDBManager("select name,model from mobileshop").getResultSet();intintPageSize;//一页显示的记录数intintRowCount;//记录的总数intintPageCount;//总页数intintPage;//待显示的页码StringstrPage;inti;
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=newStringBuffer("");
response.setContentType("text/xml");
response.setHeader("Cache-Control","no-cache");
content.append("<?xml version=\"1.0\"encoding=\"UTF-8\"?>");
content.append("");while(i
{Stringname=rs.getString("name");Stringemail=rs.getString("model");
content.append("");
content.append(""+name+"");
content.append(""+email+"");
content.append("");
rs.next();
i++;
}
content.append("
");
System.out.print(content);
out.print(content);
}
catch(Exception e)
{
e.printStackTrace();
}%>