pingpang

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            21 Posts :: 0 Stories :: 3 Comments :: 0 Trackbacks

          在瀏覽網(wǎng)頁時,經(jīng)常會看到分頁顯示的頁面。如果想把大量的數(shù)據(jù)提供給瀏覽者,分頁顯示是個非常實用的方法。分頁顯示數(shù)據(jù)能夠幫助瀏覽者更好地查看信息,能夠有條理的顯示信息。
          在傳統(tǒng)的web技術中,分頁顯示的相關操作都是在服務器端進行的,服務器端獲取客戶端的請求分頁,并根據(jù)請求頁數(shù)獲取指定的結果集。最后把結果集中的數(shù)據(jù)返回到客戶端,這時返回結果中不但包含了數(shù)據(jù),還可能包含了數(shù)據(jù)的顯示樣式。客戶端的每一次數(shù)據(jù)更新,都會重新打開一個網(wǎng)頁,如果網(wǎng)頁中包含了很多html元素,就會造成網(wǎng)頁打開速度較慢的情況。
          為了顯示部分數(shù)據(jù),而需要加載整個頁面的數(shù)據(jù),顯得有點得不償失。使用Ajax技術可以很好的彌補這些問題,服務器端只傳輸數(shù)據(jù)庫表中的數(shù)據(jù),客戶端獲取這些數(shù)據(jù)只更新局部內容,與數(shù)據(jù)無關的其他元素保持不變。
          現(xiàn)在創(chuàng)建一個實例,以演示使用Ajax技術實現(xiàn)數(shù)據(jù)的分頁顯示。該實例的代碼實現(xiàn)分為服務器端和客戶端。

          1,準備工作


          我們這里使用Mysql數(shù)據(jù)庫,我在shop數(shù)據(jù)庫中創(chuàng)建了一張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,服務器端代碼


               在本實例中,服務器端代碼具有獲取客戶端請求頁數(shù)和產生指定記錄集的功能。打開記事本,輸入下列代碼:


          <%@ 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;      //一頁顯示的記錄數(shù)
          int intRowCount;      //記錄的總數(shù)
          int intPageCount;     //總頁數(shù)
          int intPage;         //待顯示的頁碼
          String strPage;
          int i;
          intPageSize
          =2;       //設置一頁顯示的記錄數(shù)
          strPage
          =request.getParameter("page");         //取得待顯示的頁碼
          if(strPage==null)             //判斷strPage是否等于null,如果是,則顯示第一頁數(shù)據(jù)
          {
          intPage
          =1;
          }
          else{
          intPage
          =java.lang.Integer.parseInt(strPage);   //將字符串轉化為整形
          }
          if(intPage<1)
          {
          intPage
          =1;
          }
          //獲取記錄總數(shù)
          rs.last();
          intRowCount
          =rs.getRow();
          //計算總頁數(shù)
          intPageCount
          =(intRowCount+intPageSize-1)/intPageSize;
          //調整顯示的頁碼
          if(intPage>intPageCount) intPage=intPageCount;
          if(intPageCount>0)
          {
          //將記錄指針定位到待顯示頁的第一條記錄上
          rs.absolute((intPage
          -1)*intPageSize+1);
          }
          //下面用于顯示數(shù)據(jù)
          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();
           }
           
          %>

          posted on 2012-08-12 23:05 往事隨風 閱讀(1983) 評論(2)  編輯  收藏

          Feedback

          # re: Ajax的常用技巧---實現(xiàn)數(shù)據(jù)庫分頁[未登錄] 2012-08-13 08:54 james
          樓主你的代碼存在連接泄露的問題  回復  更多評論
            

          # re: Ajax的常用技巧---實現(xiàn)數(shù)據(jù)庫分頁 2012-08-13 15:47 張曉留
          樓主,你代碼有很大問題啊,createStatement 沒有指定游標參數(shù),rs.last()肯定會報錯的,還是jsp直接內嵌了out的xml,能直接顯示嘛?  回復  更多評論
            


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          主站蜘蛛池模板: 西林县| 博罗县| 京山县| 二连浩特市| 基隆市| 和硕县| 连云港市| 丹凤县| 蛟河市| 屏山县| 双城市| 南漳县| 双桥区| 疏附县| 紫阳县| 关岭| 镇原县| 库伦旗| 前郭尔| 武清区| 炉霍县| 潞西市| 四会市| 新沂市| 容城县| 会东县| 兖州市| 准格尔旗| 呼伦贝尔市| 治多县| 绩溪县| 麻江县| 呼玛县| 遂宁市| 淮北市| 昌邑市| 恩平市| 鄂温| 磴口县| 蛟河市| 和龙市|