1

私はSpringを初めて使用し、CASに取り組んでいます。ユーザー認証のためにデータベースにクエリを実行する必要がありますが、サーブレットをコントローラーとして使用しています。したがって、そのサーブレットでSimpleJdbcTemplateを設定し、それを使用してデータベースにクエリを実行する方法があるかどうかを知る必要があります。web.xmlファイルまたはその他のファイルを構成する方法がある場合。

すでにありがとうございます。

4

1 に答える 1

3

JdbcTemplateに直接注入したりアクセスしたりするのは良い考えではありませServletController
間にレイヤーを配置して、DAOをDAO注入することをお勧めします。 を使用するには、構成のどこかに定義が必要です(xmlまたはアノテーションを介したSpringコンテキスト)。 を持っている場合、スプリング構成は次のようになりますJdbcTemplate
JdbcTemplateDataSource
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>());
   }
}

サーブレットでは、を使用してこのDaoの参照を取得する必要があります。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;
    }

}

最後に、これらの部分はすべて独立しています。個別に読む必要があります。グーグルまたはスプリングフォーラムで多くの正確なヘルプを得ることができます。

于 2012-08-23T06:56:21.740 に答える