Spring ldap 中文文档(一)
第一章 介绍
 
  1.1 概览
 
  Spring-LDAP是一个java简单应用在LDAP开发的一个库,是采取类似Spring JDBC中的JdbcTemplate的原理建立的。它使得我们完全没必要考虑LdapContext的生成和关闭以及NamingEnumeration的循环。在Spring's DataAccessException基础上建立的Spring-LDAP提供一个更加全面且不用检查的异常处理机制。作为补充,Spring-LDAP也有了动态建立LDAP filtersDNs(Distinguished Names)的类。
 
  举个例子来说,如实现一个获取所有人员进入并返回存有他们名字的list的方法。用JDBC
我们得先生成一个connection,用statement执行一个query。然后我们要遍历resultset,到我们需要的那个column,把它放入到list。类似地,用Java LDAP,我们先生成一个context,用search filter执行一个search。然后循环遍历resulting namingenumeration,到需要的那个attribute,把它加入到list
 
  按传统的实现方法,用Java LDAP实现查人员名称看起来应该是这样的:
 
ample.dao;
 
public class TraditionalPersonDaoImpl implements PersonDao {
 
  public List getAllPersonNames() {
 
      Hashtable env = new Hashtable();
 
      env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
 
      env.put(Context.PROVIDER_URL, “ldap://localhost:389/dc=example,dc=com”);
 
      DirContext ctx;
 
      try {
 
        ctx = new InitialDirContext(env);
 
      } catch (NamingException e) {
 
        throw new RuntimeException(e);
spring是什么意思啊中文
 
      }
 
      LinkedList list = new LinkedList();
 
      NamingEnumeration results = null;
 
      try {
 
        SearchControls controls = new SearchControls();
 
        controls.setSearchScope(SearchControls.SUBTREE_SCOPE);
 
 results = ctx.search("", "(objectclass=person)", controls);
 
        while (results.hasMore()) {
 
            SearchResult searchResult = (SearchResult) ();
 
            Attributes attributes = Attributes();
 
            Attribute attr = ("cn");
 
            String cn = (String) ();
 
            list.add(cn);
 
        }
 
      } catch (NameNotFoundException e) {
 
        // The base context was not found.
 
        // Just clean up and exit.
 
      } catch (NamingException e) {
 
        throw new RuntimeException(e);
 
      } finally {
 
        if (results != null) {
 
            try {
 
               results.close();
 
            } catch (Exception e) {
 
              // Never mind this.
 
            }
 
        }
 
        if (ctx != null) {
 
            try {
 
              ctx.close();
 
            } catch (Exception e) {
 
               // Never mind this.
 
            }
        }
      }
      return list;
  }
}
 
通过springLDAP AttributesMapper,我们可以通过下面的代码实现完全一样的功能:
 
ample.dao;
 
public class PersonDaoImpl implements PersonDao {
 
  private LdapTemplate ldapTemplate;
 
  public void setLdapTemplate(LdapTemplate ldapTemplate) {

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。