<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    pingpang

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

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

    1,準(zhǔn)備工作


    我們這里使用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,用于返回查詢結(jié)果集。

    2,服務(wù)器端代碼


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


    <%@ 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è)置一頁顯示的記錄數(shù)
    strPage
    =request.getParameter("page");         //取得待顯示的頁碼
    if(strPage==null)             //判斷strPage是否等于null,如果是,則顯示第一頁數(shù)據(jù)
    {
    intPage
    =1;
    }
    else{
    intPage
    =java.lang.Integer.parseInt(strPage);   //將字符串轉(zhuǎn)化為整形
    }
    if(intPage<1)
    {
    intPage
    =1;
    }
    //獲取記錄總數(shù)
    rs.last();
    intRowCount
    =rs.getRow();
    //計算總頁數(shù)
    intPageCount
    =(intRowCount+intPageSize-1)/intPageSize;
    //調(diào)整顯示的頁碼
    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 往事隨風(fēng) 閱讀(1979) 評論(2)  編輯  收藏

    Feedback

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

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


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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲高清免费在线观看| 亚洲国产精品丝袜在线观看| 国产AV无码专区亚洲A∨毛片| 麻豆69堂免费视频| 免费人妻av无码专区| selaoban在线视频免费精品| 亚洲精品色婷婷在线影院| 免费高清A级毛片在线播放| 亚洲国产天堂久久综合| 国产免费黄色无码视频| 久久精品国产精品亚洲艾草网美妙 | 一级午夜免费视频| 亚洲伊人久久综合影院| 三年片在线观看免费西瓜视频 | 亚洲热线99精品视频| 十八禁视频在线观看免费无码无遮挡骂过 | 免费一级不卡毛片| eeuss草民免费| 国产精品亚洲综合专区片高清久久久| 免费国产va视频永久在线观看| 亚洲福利在线播放| 你是我的城池营垒免费看| 亚洲av不卡一区二区三区| 免费人成在线观看69式小视频| 国产亚洲精品bv在线观看| 国产精品久免费的黄网站| a级毛片免费网站| 久久亚洲精品成人777大小说| 久久精品国产免费观看三人同眠 | 久久久久亚洲精品美女| 99精品一区二区免费视频| 亚洲影视自拍揄拍愉拍| 亚洲一级特黄大片在线观看| 午夜无码A级毛片免费视频| 亚洲入口无毒网址你懂的| 亚洲色偷拍区另类无码专区| 91av在线免费视频| 亚洲国产精品成人久久| 在线精品一卡乱码免费| 人人爽人人爽人人片A免费| 久久丫精品国产亚洲av|