阅读背景:

java对openldap执行crud操作_weixin_34249367的博客

来源:互联网 
import javax.naming.NamingException;

public interface Ldap {
 public void connect() throws NamingException;
 public void search() throws NamingException;
 public void update() throws NamingException;
 public void add() throws NamingException;
 public void delete() throws NamingException;
 public void close() throws NamingException;
}
 
import java.util.Hashtable;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.BasicAttribute;
import javax.naming.directory.BasicAttributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.InitialDirContext;
import javax.naming.directory.ModificationItem;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
public class LdapImpl implements Ldap {
 private DirContext ds;
 @Override
 public void search() throws NamingException {
  System.out.println("Searching...");
  SearchControls searchCtls = new SearchControls();
  // Specify the search scope
  searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
  // specify the LDAP search filter
  String searchFilter = "uid=test";
  // Specify the Base for the search
  //String searchBase = "dc=ibm,dc=com";
  String searchBase = "o=tcl,c=cn";
  
  // Specify the attributes to return
  String returnedAtts[] = { "cn"};
  //可以查找多个属性
  //String returnedAtts[] = { "cn","mail","userPassword","sn" };
  
  searchCtls.setReturningAttributes(returnedAtts);
  // Search for objects using the filter
  NamingEnumeration<SearchResult> entries = ds.search(searchBase,
    searchFilter, searchCtls);
  // Loop through the search results
  while (entries.hasMoreElements()) {
   SearchResult entry = entries.next();
   System.out.println(">>>" + entry.getName());
   // Print out the groups
   Attributes attrs = entry.getAttributes();
   if (attrs != null) {
    for (NamingEnumeration<? extends Attribute> names = attrs
      .getAll(); names.hasMore();) {
     Attribute attr = names.next();
     System.out.println("AttributeID: " + attr.getID());
     for (NamingEnumeration<?> e = attr.getAll(); e.hasMore();) {
      System.out.println("Attributes:" + e.next());
     }
    }
   }
  }
  System.out.println("Search complete.");
 }
 @Override
 public void update() throws NamingException {
  System.out.println("Updating...");
   ModificationItem[] mods = new ModificationItem[1];
         Attribute attr = new BasicAttribute("cn", "changed value");
         
         // Support add, replace and remove an attribute.
         mods[0] = new ModificationItem(DirContext.REPLACE_ATTRIBUTE, attr);
//         ds.modifyAttributes("uid=test,ou=tester,dc=ibm,dc=com", mods);
         ds.modifyAttributes("uid=test, o=tcl,c=cn", mods);
         
         System.out.println("Updated.");
 }
 @Override
 public void add() throws NamingException {
  System.out.println("Adding...");
  Attributes attrs = new BasicAttributes();
  attrs.put("uid", "test");
  attrs.put("sn", "test");
  attrs.put("cn", "test test");
  attrs.put("userPassword", "111111".getBytes());
  attrs.put("mail", "import 



你的当前访问异常,请进行认证后继续阅读剩余内容。

分享到: