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

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

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


    posts - 15,  comments - 34,  trackbacks - 27

    Spring對JDBC進(jìn)行了非常優(yōu)雅的封裝,通過一系列的模板方法,只需簡單的幾行代碼就可實(shí)現(xiàn)數(shù)據(jù)庫的訪問。通過Spring的JdbcTemplate訪問數(shù)據(jù)庫從而實(shí)現(xiàn)用戶驗(yàn)證。Access數(shù)據(jù)庫,建立表Account,包含兩個(gè)字段:

        username:VARCHAR(20),主鍵;
        password:VARCHAR(20)。

    然后輸入一些測試數(shù)據(jù),注冊到系統(tǒng)DSN,名字為Blog。接下來我們在Tomcat中配置一個(gè)名為“jdbc/blog”的DataSource如下:

    如果你使用其他數(shù)據(jù)庫,只需要保證表的邏輯結(jié)構(gòu)和JDNI名“jdbc/blog”。在AccountManager中,使用JdbcTemplate訪問數(shù)據(jù)庫來驗(yàn)證用戶:

        Account getAccount(String username, String password) throws Exception {
            
    // validate the password:
            InitialContext ctx = new InitialContext();
            DataSource dataSource 
    = (DataSource)ctx.lookup("java:comp/env/jdbc/blog");
            JdbcTemplate jt 
    = new JdbcTemplate(dataSource);
            String pass 
    = (String) jt.queryForObject(
                
    "select password from Account where username=?",
                
    new Object[] {username}, String.class);
            
    if(password.equals(pass))
            
    {
                Account account 
    = new Account();
                account.setUsername(username);
                account.setPassword(password);
                
    return account;
            }

            
    throw new Exception("authorization failed.");
        }

     

    編譯運(yùn)行,輸入hello.c?username=xxx&password=xxx來測試用戶登錄,如果匹配數(shù)據(jù)庫中的記錄,會(huì)顯示出用戶名,否則可以看到authorization failed異常。要更友好的顯示登陸失敗,可以在Controller中導(dǎo)向一個(gè)login_failed.jsp并給出登陸失敗的原因。

    下面來看這個(gè)AccountManager,很顯然在驗(yàn)證邏輯中寫入了JNDI查找DataSource的代碼,這將導(dǎo)致比較“生硬”的編碼。“依賴注入”此刻顯示出了威力:讓容器注入DataSource:

    public class AccountManager implements java.io.Serializable {
        
    private DataSource dataSource;
        
    public void setDataSource(DataSource dataSource) {
            
    this.dataSource = dataSource;
        }


        Account getAccount(String username, String password) throws Exception 
    {
            JdbcTemplate jt 
    = new JdbcTemplate(dataSource);
            
        }

    }

    OK,現(xiàn)在這個(gè)AccountManager變得優(yōu)雅多了,現(xiàn)在如何配置DataSource的注入呢?Spring提供了一個(gè)DataSourceUtils類,通過靜態(tài)方法getDataSourceFromJndi來獲得容器中配置的DataSource。我們添加以下配置:

        <bean id="dataSource"
              class
    ="org.springframework.jdbc.datasource.DataSourceUtils"
              factory-method
    ="getDataSourceFromJndi">
            
    <constructor-arg><value>jdbc/blogvalue>constructor-arg>
        
    bean>
        
    <bean id="accountManager" class="AccountManager">
            
    <property name="dataSource">
                
    <ref bean="dataSource" />
            
    property>
        
    bean>
     
    現(xiàn)在重新部署,效果和以前一樣了,但是相關(guān)代碼已被"放到",配置文件中了
    posted on 2005-02-04 11:20 jacky 閱讀(2018) 評論(1)  編輯  收藏 所屬分類: Open source

    FeedBack:
    # re: spring的jdbc封裝
    2011-09-14 14:21 | 呂紅芬
    OK,Thank you !!!  回復(fù)  更多評論
      
    <2011年9月>
    28293031123
    45678910
    11121314151617
    18192021222324
    2526272829301
    2345678

    常用鏈接

    留言簿(10)

    隨筆檔案

    文章分類

    文章檔案

    相冊

    收藏夾

    java

    搜索

    •  

    最新評論


    主站蜘蛛池模板: 亚洲国产成人五月综合网| 亚洲av无码av制服另类专区| 亚洲成?Ⅴ人在线观看无码| 亚洲va在线va天堂va手机| 美女无遮挡免费视频网站| 午夜爽爽爽男女免费观看影院| 日韩免费高清一级毛片在线| 久久亚洲精品国产精品黑人| 男女猛烈xx00免费视频试看| 亚洲成人免费网址| 国产亚洲福利精品一区| 特级毛片免费观看视频| 又粗又大又猛又爽免费视频| 亚洲AV无码一区二区三区在线| 欧亚精品一区三区免费| 亚洲国产女人aaa毛片在线| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 看全色黄大色大片免费久久| 国产AV无码专区亚洲精品| 国产成人亚洲精品无码AV大片| 免费国产精品视频| 一出一进一爽一粗一大视频免费的| 成年女人午夜毛片免费看| 亚洲春色在线观看| 无码人妻丰满熟妇区免费| 亚洲精品网站在线观看你懂的| 两个人看的www免费视频| 国产精品亚洲视频| 一区二区三区免费在线观看| 久久久久亚洲精品影视| 国产v精品成人免费视频400条| 亚洲网站在线免费观看| 好男人视频在线观看免费看片 | 国产福利免费在线观看| 日本亚洲色大成网站www久久| 无码av免费毛片一区二区| 亚洲精品视频久久| 免费v片视频在线观看视频| 亚欧免费无码aⅴ在线观看| 亚洲人成未满十八禁网站| 在线观看免费大黄网站|