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

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

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

    peacess

    統(tǒng)計

    留言簿(14)

    積分與排名

    閱讀排行榜

    評論排行榜

    gwt 1.4學(xué)習(xí)--數(shù)據(jù)庫記錄顯示實現(xiàn)(二.1)(把源來的內(nèi)容升級為gwt1.4)

    實現(xiàn)的功能
       在gwt開發(fā)中實現(xiàn),與數(shù)據(jù)庫(oracle)的連接(jdbc),并顯示數(shù)據(jù)記錄集,說白了就是在ajax的gwt架構(gòu)下與數(shù)據(jù)庫交互。
    相關(guān)工具
    gwt1.4,eclipse3.3
    首先說明一下要原理
    分為兩部分:客戶端部分與服務(wù)端部分
    如果對gwt的遠(yuǎn)程調(diào)用不怎么清楚,請參見:http://code.google.com/webtoolkit/documentation/com.google.gwt.doc.DeveloperGuide.RemoteProcedureCalls.html

    客戶端部分
       由于客戶端只支持jdk1.4的包util與lang(沒有jdbc),所以只能自己寫一個類存放記錄集,如下
    public class PeaceResultSet {
        private String[] cols;
        /**
         * @gwt.typeArgs <java.lang.String[]>
         */
        private List rows;
        public String[] getCols() {
            return cols;
        }
        public void setCols(String[] cols) {
            this.cols = cols;
        }
        public List getRows() {
            return rows;
        }
        public void setRows(List rows) {
            this.rows = rows;
        }
    }
        對此類作一個簡單的說明。cols是存放列名的,rows是存放記錄行的,請注意在它前面的那一個注釋(/**
         * @gwt.typeArgs <java.lang.String[]>
         */),一定不能少的,因為,最終這個java代碼會被轉(zhuǎn)換成javascript,這里告訴轉(zhuǎn)換的類型的
    有了記錄集,我們就可以用FlexTable來把我們的記錄集顯示出來了,如下
    public class PeaceTable extends Composite{

        private FlexTable table = new FlexTable();
        public FlexTable getTable() {
            return table;
        }
        public PeaceTable() {
            this.initWidget(table);
        }
        public void showResultSet(PeaceResultSet re)
        {
            this.table.clear();
            if(re != null && re.getRows()!= null && re.getRows().size()>0)
            {
                String[] cols = re.getCols();
                List rows = re.getRows();

                for(int j = cols.length-1; j >= 0; j--)
                {
                    table.setText(0,j,cols[j]);
                }

                for(int i = 0; i < rows.size(); i++)
                {
                    cols = (String[])rows.get(i);
                    for(int j = cols.length-1; j >= 0; j--)
                    {
                        table.setText(i+1,j,cols[j]);
                    }
                }
            }
            else
            {
                table.setText(0,0,"no data");
            }
        }
        public void callServer(String sql) {
            PeaceSelectResultSetAsync.Util.getInstance().select(sql, new AsyncCallback() {
                public void onFailure(Throwable caught) {
                }
                public void onSuccess(Object result) {
                    showResultSet((PeaceResultSet) result);
                }
              });
        }
    服務(wù)端部分
    這一部分是完全的java,可以用java可以使用的全部庫(當(dāng)然自己寫的也可以)
    我這里用的是jdbc來連接數(shù)據(jù)庫(只是最簡單的,因為這里不是說明數(shù)據(jù)怎么操作的),代碼如下
    public class PeaceSelectResultSetImpl extends RemoteServiceServlet implements
            PeaceSelectResultSet {

        private static final long serialVersionUID = 1L;

        public PeaceResultSet select(String sql) {
            Connection conn = null;
            Statement stmt = null;
            ResultSet se = null;
            try {
                Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
                String url = "jdbc:oracle:thin:@192.168.1.11:1521:XXXX"; // orcl??????SID
                String user = "uuser";
                String password = "pwd";
                conn = DriverManager.getConnection(url, user, password);
                stmt = conn.createStatement();
                se = stmt.executeQuery(sql);
                ResultSetMetaData rsmd = se.getMetaData();

                String[] cols = new String[rsmd.getColumnCount()];
                List rows = new ArrayList();
                for (int i = cols.length; i > 0; i--) {
                    cols[i - 1] = rsmd.getColumnName(i);
                }
                while (se.next()) {
                    String[] row = new String[cols.length];
                    rows.add(row);
                    for (int i = cols.length - 1; i >= 0; i--) {
                        row[i] = se.getString(cols[i]);
                    }
                }
                PeaceResultSet kfse = new PeaceResultSet();
                kfse.setCols(cols);
                kfse.setRows(rows);
                return kfse;
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (se != null)
                    try {
                        se.close();
                    } catch (SQLException e1) {
                        e1.printStackTrace();
                    }
                if (stmt != null)
                    try {
                        stmt.close();
                    } catch (SQLException e1) {
                        e1.printStackTrace();
                    }
                if (conn != null)
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
            }
            return null;
        }
    }
    在下一部分中,我將說明一些注意事項,以及給出完整的源代碼!!

    posted on 2007-07-24 22:42 中東 閱讀(5708) 評論(5)  編輯  收藏 所屬分類: gwt(google web toolkit)

    評論

    # re: gwt學(xué)習(xí)--數(shù)據(jù)庫記錄顯示實現(xiàn)(二.1) 2006-06-02 11:32 liang

    啊,我明白了  回復(fù)  更多評論   

    # re: gwt學(xué)習(xí)--數(shù)據(jù)庫記錄顯示實現(xiàn)(二.1) 2007-03-19 19:03 tomshen excuse99@tom.com

    您好,GWT中如何避免每一次新增加服務(wù)都要配置web.xml?
    如果這樣,web.xml豈不是成了團(tuán)隊開發(fā)的瓶頸  回復(fù)  更多評論   

    # re: gwt 1.4學(xué)習(xí)--數(shù)據(jù)庫記錄顯示實現(xiàn)(二.1)(把源來的內(nèi)容升級為gwt1.4) 2007-07-28 14:18 www.8383.com

    只要有博客就可以在8383.com免費申請.CN域名,輸入域名就能直接進(jìn)入博客,我剛申請了一個,快輸入8383hosting.cn到我的博客看我是如何耍酷吧  回復(fù)  更多評論   

    # re: gwt 1.4學(xué)習(xí)--數(shù)據(jù)庫記錄顯示實現(xiàn)(二.1)(把源來的內(nèi)容升級為gwt1.4) 2007-07-31 02:14 pepito

    Hi.

    Your code works ok, but I'm trying to do using a connection pool instead of usign class.ForName.

    Do you know something about, or a place to look...

    Thanks


    trumaxformax1@yahoo.es  回復(fù)  更多評論   

    # re: gwt 1.4學(xué)習(xí)--數(shù)據(jù)庫記錄顯示實現(xiàn)(二.1)(把源來的內(nèi)容升級為gwt1.4) 2008-06-01 20:38 lovelong

    public class SampleServiceImpl extends RemoteServiceServlet implements SampleService {
    ApplicationContext ctx=new ClassPathXmlApplicationContext("applicationContext.xml");
    UserDAO dao=(UserDAO) ctx.getBean("UserDAO");
    User u=new User();
    List<User> list=dao.findAll();
    public List getPersons(String pattern) {
    return list;
    }
    我已經(jīng)從數(shù)據(jù)庫中返回了一個list了
    現(xiàn)在我想把這個list
    打印到helloworld.java 可以加我也就是前臺了
    怎么弄呢 用什么組件?
    可以發(fā)郵件給我 87102146@qq.com  回復(fù)  更多評論   

    主站蜘蛛池模板: 亚洲精品偷拍无码不卡av| 亚洲乱色熟女一区二区三区丝袜| 亚洲精品在线视频观看| 99re在线免费视频| 1区1区3区4区产品亚洲| 182tv免费观看在线视频| 亚洲色av性色在线观无码| 天天影院成人免费观看| 亚洲一区中文字幕在线观看| 国产麻豆视频免费观看| 中文无码亚洲精品字幕| 国产美女无遮挡免费视频| 无遮挡免费一区二区三区| 亚洲欧洲国产精品香蕉网| 人妻无码久久一区二区三区免费 | 成人免费福利视频| 亚洲熟女综合色一区二区三区| 午夜a级成人免费毛片| 一边摸一边桶一边脱免费视频| 亚洲一区二区三区在线视频| 亚洲精品视频免费| 亚洲高清在线视频| 国产福利在线观看免费第一福利| 中文字幕在线观看亚洲日韩| 国产伦精品一区二区三区免费下载 | 久久国产亚洲精品麻豆| 曰批全过程免费视频网址| 亚洲精品一卡2卡3卡四卡乱码| 亚洲国产精品13p| 亚洲精品免费视频| 国产成人亚洲综合a∨| 亚洲国产日韩一区高清在线| 啦啦啦高清视频在线观看免费| 未满十八私人高清免费影院| 亚洲国产成人久久综合一| 国产成人精品免费视频软件| 国产午夜成人免费看片无遮挡| 国产v亚洲v天堂a无| 久久亚洲AV无码西西人体| 国产成人精品免费视| 免费人人潮人人爽一区二区|