2012-08-23 105 views
1

我是Spring的新手,我正在研究CAS。我需要查詢數據庫以進行用戶身份驗證,但我使用的是servlet作爲控制器。因此,我需要知道是否有任何方法在該servlet中設置SimpleJdbcTemplate並使用它來查詢數據庫。如果有如何配置web.xml文件或任何其他文件。爲Servlet設置SimpleJdbcTemplate

謝謝。

+0

爲什麼你使用servlets而不是java控制器? –

+0

如果您使用jasig-CAS來驗證您的用戶,則應在CAS服務器中實施身份驗證方法。你的問題是如何配置數據庫查詢身份驗證。 CAS服務器中的方法?或者您是否嘗試做其他任何事情,例如CAS服務器驗證用戶訪問權限後的用戶授權? – kothvandir

回答

3

JdbcTemplate直接注入ServletController並不是一個好主意。
你可以有一個DAO層之間,並注入你的JdbcTemplate在你的DAO將是一個更好的方法。
爲了使用JdbcTemplate,您需要在配置的某處(通過xml或Annotations的Spring上下文)定義DataSource
如果你有一個UserDao,那麼你的春天的配置情況如下

<bean class="com.xxx.dao.UserDAOImpl" id="userDAO"> 
    <property name="jdbcTemplate" ref="jdbcTemplate"/> 
</bean> 
<bean class="org.springframework.jdbc.core.JdbcTemplate" id="jdbcTemplate"> 
    <constructor-arg ref="dataSource"/> 
</bean> 
and here you need to difine your "dataSource" there are multiple ways to configure it, You may get better help from google. 

而現在,你UserDaoImpl看起來像

public class UserDAOImpl implements UserDAO { 
    private JdbcTemplate jdbcTemplate; 
    //setter and getter for jdbcTemplate 

    public List<Map<String, Object>> getUsers() { 
     String query = "select * from user"; 
     return jdbcTemplate.queryForList(query, new HashMap<String, String>()); 
    } 
} 

在servlet,你需要得到這個參考道使用的servlet類ServiceLocator

... 
public UserDAO getUserDao() { 
    return ServiceLocator.getBean(UserDAO.class); 
} 
... 

再次有多種方法來設計ServiceLocator,下面是簡單的實現。

public class ServiceLocator implements ApplicationContextAware { 

    private static ApplicationContext applicationContext; 

    /** 
    * @return Returns the applicationContext. 
    */ 
    public static ApplicationContext getApplicationContext() { 
     return applicationContext; 
    } 

    public static <T> T getBean(Class<T> requiredType) throws BeansException { 
     return getApplicationContext().getBean(requiredType); 
    } 

    /** 
    * @param applicationContext The applicationContext to set. 
    */ 
    public void setApplicationContext(ApplicationContext applicationContext) { 
     ServiceLocator.applicationContext = applicationContext; 
    } 

} 

最後,所有這些作品都是獨立的,你需要單獨閱讀時,你會得到很多,對谷歌或春季論壇上精確的幫助。