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

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

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

    單列+JDom+XML

    Posted on 2008-10-17 14:50 橡皮人 閱讀(243) 評(píng)論(0)  編輯  收藏
      使用JDom做一個(gè)數(shù)據(jù)屏蔽的例子
     
      XML代碼如下:
    <?xml version="1.0" encoding="UTF-8"?>
    <sys-info>
        
    <sqlinfo>
            
    <driver>com.mysql.jdbc.Driver</driver>
            
    <url>jdbc:mysql://localhost:3306/address</url>
            
    <username>root</username>
            
    <password>nicholas</password>
        
    </sqlinfo>
        
    <programeinfo>
            
    <beans>
                
    <bean id="com.nicholas.inter.IUserDAO" class="com.nicholas.inter.imple.UserDAO"/>
            
    </beans>
        
    </programeinfo>
    </sys-info>
    其中bean的信息使用屬性來封裝,這樣做比多個(gè)XML對(duì)象要靈活一些,我的意圖是用Util下的Map裝載這些信息,實(shí)現(xiàn)父類引用指向子類對(duì)象。

    寫一個(gè)JDBC訪問對(duì)象的Bean
    public class SysInfo {

        
    private String driver;
        
    private String url;
        
    private String username;
        
    private String password;

        
    public SysInfo() {
        }

        
    public String getDriver() {
            
    return driver;
        }

        
    public void setDriver(String driver) {
            
    this.driver = driver;
        }

        
    public String getUrl() {
            
    return url;
        }

        
    public void setUrl(String url) {
            
    this.url = url;
        }

        
    public String getUsername() {
            
    return username;
        }

        
    public void setUsername(String username) {
            
    this.username = username;
        }

        
    public String getPassword() {
            
    return password;
        }

        
    public void setPassword(String password) {
            
    this.password = password;
        }
    }


    現(xiàn)在開始使用JDom解析XML的數(shù)據(jù)


    public class ParseMessage {

        SAXBuilder builder 
    = null;
        Document doc 
    = null;
        Element el_root 
    = null;
            
    //創(chuàng)建單列模式
        private static ParseMessage instance;

        
    private ParseMessage() {
            builder 
    = new SAXBuilder();
            
    try {
                doc 
    = builder.build("config.xml");
                el_root 
    = doc.getRootElement();
            } 
    catch (JDOMException e) {
                
    // TODO Auto-generated catch block
                e.printStackTrace();
            } 
    catch (IOException e) {
                
    // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }

        
    public static ParseMessage getInstance() {

            
    if (instance == null) {

                instance 
    = new ParseMessage();

            }
            
    return instance;

        }

        
    public SysInfo getSysInfo() {
            SysInfo si 
    = null;
            
    try {
                Element el_driver 
    = (Element) 

    XPath.selectSingleNode(el_root,
                        
    "//driver");
                Element el_url 
    = (Element) 

    XPath.selectSingleNode(el_root, 
    "//url");
                Element el_username 
    = (Element) 

    XPath.selectSingleNode(el_root,
                        
    "//username");
                Element el_password 
    = (Element) 

    XPath.selectSingleNode(el_root,
                        
    "//password");
                String driver 
    = el_driver.getText();
                String url 
    = el_url.getText();
                String username 
    = el_username.getText();
                String password 
    = el_password.getText();
                si 
    = new SysInfo();
                si.setDriver(driver);
                si.setUrl(url);
                si.setUsername(username);
                si.setPassword(password);
            } 
    catch (JDOMException e) {
                
    // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
    return si;

        }

        
    public Map initBeans() {
            List list 
    = null;
            Map map 
    = new HashMap();
            
    try {
                list 
    = XPath.selectNodes(el_root, "//bean");
            } 
    catch (JDOMException e) {
                
                e.printStackTrace();
            }
            
    int index = list.size();
            
    for (int i = 0; i < index; i++) {
                Element el_parameter 
    = (Element) list.get(i);
                Attribute att_inter 
    = 

    el_parameter.getAttribute(
    "id");
                Attribute att_imple 
    = 

    el_parameter.getAttribute(
    "class");
                String inter 
    = att_inter.getValue();
                String imple 
    = att_imple.getValue();
                map.put(inter, imple);
            }
            
    return map;

        }
        
        
    public UserDAO getUserDAO(Class c) {
            UserDAO userdao
    =null//用戶數(shù)據(jù)訪問層
            Map map=this.initBeans();
            
    try {
                userdao
    =(UserDAO)Class.forName(map.get

    (c.getName()).toString()).newInstance();
            } 
    catch (InstantiationException e) {
                
    // TODO Auto-generated catch block
                e.printStackTrace();
            } 
    catch (IllegalAccessException e) {
                
    // TODO Auto-generated catch block
                e.printStackTrace();
            } 
    catch (ClassNotFoundException e) {
                
    // TODO Auto-generated catch block
                e.printStackTrace();
            }
            
    return userdao;
            
        }

    }


    DB層依靠ParseMessage類解析出來的數(shù)據(jù)獲得Driver等等

        static SysInfo si=ParseMessage.getInstance().getSysInfo();
        
    public static Connection getConn() throws Exception {
            
    //1 裝驅(qū)動(dòng)
            Class.forName(si.getDriver());
            Connection conn 
    = DriverManager.getConnection(si.getUrl(), si.getUsername(), si.getPassword());
            
    return conn;
        }

    Servlet依靠JSP頁(yè)面?zhèn)鬟f過來的Username Password進(jìn)行判斷

    response.setContentType("text/html;charset=gbk");
            String username
    =request.getParameter("username");
            String password
    =request.getParameter("password");
            User user
    =new User(); //User bean
            user.setUsername(username);
            user.setPassword(password);
            UserDAO userdao
    =ParseMessage.getInstance().getUserDAO

    (IUserDAO.
    class); //傳遞UserDAO父接口
            if(userdao.isRight(user)) {
                
                System.out.println(
    "登錄成功!");
            } 
    else {
                System.out.println(
    "登錄失敗!");
                
            }

    其中應(yīng)該注意的是XML的路徑問題,使用Tomcat配置項(xiàng)目的時(shí)候并沒有把XML文件導(dǎo)入到項(xiàng)目的子文件中,根據(jù)需要可以把XMl文件放到SRC中,修改ParseMessage中的路徑即可,因?yàn)槭菍懶±樱抑苯影裍ML文件放到Tomcat目錄下的Bin文件夾中,Tomcat默認(rèn)會(huì)查找Bin文件夾。

    初次寫Java單列和JDom,剛寫的時(shí)候非常不習(xí)慣,但是要達(dá)到屏蔽數(shù)據(jù)的效果,可以考慮使用。


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


    網(wǎng)站導(dǎo)航:
     

    posts - 28, comments - 5, trackbacks - 0, articles - 0

    Copyright © 橡皮人

    主站蜘蛛池模板: 国产精品1024在线永久免费| 色噜噜AV亚洲色一区二区| 亚洲Av永久无码精品三区在线| 免费在线观看一区| 亚洲综合色一区二区三区小说| 亚洲gay片在线gv网站| 91精品免费国产高清在线| 亚洲一区无码中文字幕乱码| 国产激情免费视频在线观看| 免费一级毛片在线播放视频免费观看永久 | 三上悠亚电影全集免费 | 成人精品视频99在线观看免费| 精品亚洲成α人无码成α在线观看| jzzjzz免费观看大片免费| 亚洲精品成人片在线播放| 国产一区二区三区免费| 亚洲美女免费视频| 成人免费视频小说| 羞羞漫画小舞被黄漫免费| 久久久久久亚洲精品不卡| 日本高清免费观看| 国产成人精品日本亚洲11| 免费h黄肉动漫在线观看| 中文字幕av免费专区| 亚洲一本综合久久| 亚洲乱码国产乱码精华| 免费国产不卡午夜福在线| 香蕉视频在线免费看| 久久精品国产亚洲av麻豆小说| 国产在线观看麻豆91精品免费| 亚洲一线产区二线产区区| 亚洲AV无码一区二三区| 国产亚洲免费的视频看 | 色爽黄1000部免费软件下载| 亚洲男人的天堂www| 在线永久免费的视频草莓| 免费夜色污私人影院网站| 777亚洲精品乱码久久久久久 | 免费观看AV片在线播放| 免费人妻精品一区二区三区| 久久精品国产亚洲av麻豆色欲|