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

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

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

    如鵬網 大學生計算機學習社區

    CowNew開源團隊

    http://www.cownew.com 郵件請聯系 about521 at 163.com

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      363 隨筆 :: 2 文章 :: 808 評論 :: 0 Trackbacks

    作者楊中科是CowNew開源團隊JDBMonitor項目組的開發人員。
    CowNew開源團隊網站 http://www.cownew.com
    論壇 http://www.cownew.com/newpeng/
    轉載請注明此版權信息

    我們經常需要將我們的程序運行中的一些信息(比如在選項對話框中的設置)記錄下來,以做便再次運行的時候不用再重寫填寫這些數據。這對改善軟件的人機可用性方面是很有用的。但是讓人失望的是,現在很多Java開源軟件在這一點做的很不好,每次運行都要用戶去填寫那些配置文件。做為最好用的數據庫監控、日志工具,JDBMonitor在這方面做的是非常好的,以它的Swing界面監視器和數據庫日志記錄查詢窗口中所有的配置信息(例如遠程服務器地址、端口、數據庫名稱、JDBC驅動等等)都是被保存的,當再次運行的時候程序會自動加載這些配置信息,所以使用起來相當方便。
    我們接下來就來分析一下JDBMonitor是如何實現的。JDBMonitor的二進制jar包和源代碼都可以從 http://www.cownew.com 下載得到。
    保存加載配置文件有多種方式,比如xml文件、properties文件等,采用這些保存方式的一個問題就是如果程序是以jar,war 包等方式發布的那么這些配置文件就不能放在包中,因為包中的文件是不能在運行時改動的,只能放在磁盤的文件中,但是放在磁盤的文件中又很容易出現因為操作系統的差異、權限等問題造成程序的問題。JDBMonitor采用的則是JDK中的Preferences類來避免這些問題。
    JDK1.4中提供了Preferences類,在java.util.prefs包里面。Preferences類在不同的平臺中有不同的實現方式。比如在Windows平臺中,Preferences是將數據保存在注冊表中的。

    為了區分不同的應用程序的參數項,在建立Preferences時要指定一個節點路徑。
    Preferences是一個抽象類,提供了一系列靜態方法和抽象方法來操作參數項:
    ?Preferences userData = Preferences.userNodeForPackage(this); //得到用戶配置節點
    ?Preferences sysData = Preferences.systemNodeForPackage(this); //得到系統配置節點。
    比如在windows中Preferences.userNodeForPackage代表得到 HKEY_CURRENT_USER\Software\JavaSoft\Prefs下的相對路徑
    Preferences.systemNodeForPackage代表得到? HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Prefs下的相對路徑

    Preferences的讀取、存儲是非常容易的,存儲只要調用put***方法就可以,讀取調用get***即可,不同的put,get方法分別用于存取不同的數據類型,詳細信息可以參考JavaDoc。
    以JDBMonitor的Swing界面監視器的連接對話框為例為大家分析,打開com.cownew.JDBMonitor.listenerImpl.sckListenerClient.ConnectConfigDialog,saveConfig()和loadConfig()分別就是保存和讀取參數用了,這兩個方法會在超類中被調用。可以看到代碼實現非常簡單:
    protected void saveConfig()
    ?{
    ? Preferences prefer = Preferences.userNodeForPackage(getClass());
    ? prefer.put(HOST_NAME,getHostName());
    ? prefer.putInt(PORT,getPort());
    ?}
    ?
    ?protected void loadConfig()
    ?{
    ? Preferences prefer = Preferences.userNodeForPackage(getClass());
    ? setHostName(prefer.get(HOST_NAME,""));
    ? setPort(prefer.getInt(PORT,9527));
    ?}

    posted on 2006-06-02 23:48 CowNew開源團隊 閱讀(962) 評論(0)  編輯  收藏

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


    網站導航:
     
    主站蜘蛛池模板: 综合亚洲伊人午夜网 | 免费无码AV一区二区| 国产曰批免费视频播放免费s| 亚洲国产精品成人久久| 免费无码又爽又刺激一高潮| 国产中文在线亚洲精品官网| 国产成人精品免费大全| 亚洲美女又黄又爽在线观看| 中国一级特黄高清免费的大片中国一级黄色片 | 老司机福利在线免费观看| 看全色黄大色大片免费久久| 亚洲第一成年网站视频| 国产免费69成人精品视频| 黄色免费网址在线观看| 亚洲精品乱码久久久久久蜜桃不卡 | 亚洲国产婷婷六月丁香| 日本免费污片中国特一级| 亚洲色偷偷av男人的天堂| 国产一精品一AV一免费孕妇| 亚洲国产精品久久久久秋霞小 | 亚洲高清国产拍精品26U| 182tv免费视视频线路一二三| 亚洲fuli在线观看| 日本黄页网站免费| 精品亚洲永久免费精品| 亚洲最大在线视频| 又粗又黄又猛又爽大片免费| 男女一边桶一边摸一边脱视频免费 | 日韩精品一区二区亚洲AV观看| 国产一卡二卡3卡四卡免费| 色偷偷亚洲男人天堂| 狠狠色婷婷狠狠狠亚洲综合| 69视频免费观看l| 精品久久久久久久久亚洲偷窥女厕| 亚洲国产成人久久综合野外| 国产精品区免费视频| 亚洲aⅴ无码专区在线观看春色| 精品国产亚洲一区二区在线观看| 人妻无码久久一区二区三区免费 | 在线日韩日本国产亚洲| 无码区日韩特区永久免费系列|