1. 程式人生 > >ldap的增刪改查基本操作

ldap的增刪改查基本操作

public class Factory
{

    private static Ldap instance;
    public synchronized static Ldap creatInstance(){
        if(instance==null){
            try
            {
                String className="com.zte.dap.uima.ldap.LdapImpl";
                Class<?> c=Class.forName(className);
                instance=(Ldap) c.newInstance();
                //instance=(Ldap) Class.forName("LdapImpl").newInstance();
            }
            catch (Exception e)
            {
                throw new RuntimeException();
            }
           
        }
        return instance;
    }
    
}
public interface Ldap
{

    public void connect() throws NamingException;
    public String search(String para) throws NamingException;
    public void update() throws NamingException;
    public void add() throws NamingException;
    public void delete() throws NamingException;
    public void close() throws NamingException;
}
public class LdapImpl implements Ldap
{
    private DirContext ds;
    
    @Override
    public synchronized void connect() throws NamingException
    {
        Hashtable<String, Object> env=new Hashtable<String,Object>(11);
        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
        env.put(Context.PROVIDER_URL, "ldap://10.43.139.211:389");
        env.put(Context.SECURITY_AUTHENTICATION, "simple");
        env.put(Context.SECURITY_PRINCIPAL, "cn=root,o=ZTE,c=cn");
        env.put(Context.SECURITY_CREDENTIALS, "secret");
        ds=new InitialDirContext(env);
    }

    @Override
    public String search(String para) throws NamingException
    {
        String password=null;
        SearchControls searchCtls=new SearchControls();
        searchCtls.setSearchScope(SearchControls.SUBTREE_SCOPE);
        String searchFilter="uid="+para;
        String searchBase="o=ZTE,c=cn";
        String returnedAttrs[]={"userPassword"};
        searchCtls.setReturningAttributes(returnedAttrs);
        NamingEnumeration<SearchResult> entries=ds.search(searchBase, searchFilter, searchCtls);
        while(entries.hasMoreElements()){
            SearchResult entry=entries.next();
            Attributes attrs=entry.getAttributes();
            if(attrs!=null){
                for(NamingEnumeration<? extends Attribute> names=attrs.getAll();names.hasMore();){
                    Attribute attr=names.next();
                    for(NamingEnumeration<?> e =attr.getAll();e.hasMore();){
                        byte[] s=(byte[]) e.next();
                        password=new String(s);
                    }
                }
            }
        }
        return password;
    }

    @Override
    public void update() throws NamingException
    {
        ModificationItem[] mods=new ModificationItem[1];
        Attribute attr=new BasicAttribute("sn","張三");
        mods[0]=new ModificationItem(DirContext.REPLACE_ATTRIBUTE, attr);
        ds.modifyAttributes("uid=test,o=founder,c=com", mods);
    }

    @Override
    public void add() throws NamingException
    {
        Attributes attrs=new BasicAttributes();
        attrs.put("uid","test");
        attrs.put("sn","test");
        attrs.put("cn","test Test");
        attrs.put("userPassword", "222222");
        Attribute objclass=new BasicAttribute("objectClass");
        objclass.add("inetOrgPerson");
        attrs.put(objclass);
        this.ds.createSubcontext("uid=test,ou=users,o=ZTE,c=cn", attrs);
    }

    @Override
    public void delete() throws NamingException
    {
        this.ds.destroySubcontext("uid=test,o=founder,c=com");
    }

    @Override
    public void close() throws NamingException
    {
        ds.close();
    }

}





public class TestLdap
{
    public static void main(String[] args) throws NamingException
    {
        Ldap ldap=Factory.creatInstance();
        ldap.connect();
        try {
            // add uid=test,ou=tester,dc=ibm,dc=com
            //ldap.add();
            // search uid=test
            ldap.search("test");
            // update cn with new value of "changed name"
            //ldap.update();
            // search uid=test to see cn value.
            //ldap.search();
            // delete uid=test,ou=tester,dc=ibm,dc=com
            //ldap.delete();
            // search again.
            //ldap.search();
        } finally {
            ldap.close();
        }
        
    }
}



相關推薦

ldap刪改基本操作

public class Factory { private static Ldap instance; public synchronized static Ldap creatInstance(){ if(instance==null)

搭建MyBatis工作環境以及刪改基本操作

read generated artifact this close sco del url eal 數據庫準備 創建一個數據庫為mybatus-test,表為user CREATE TABLE `user` ( `id` int(11) NOT NULL AUTO_I

XML模塊刪改基本操作

讀取 try element utf-8 文檔 ldo nco nbsp 基本 增:新建一個xml文件,把數據寫進去 # 怎麽生成一個xml文件? # 1,導入模塊 import xml.etree.ElementTree as et # 2, 定義節點 root =

例項介紹MyBatis刪改基本操作

通過上一篇部落格《MyBatis的入門介紹》我們瞭解了MyBatis基本原理 這篇我們就說說它的增刪改查基本操作 例項應用 建立Java Product專案,目錄結構如下: 資料庫結構如下 conf.xml檔案內容 <?xml version=

Oracle-資料庫刪改基本操作

一、建立資料表 1).建立不存在的新表:  create table tname(   Data_Name Date_Type [default][預設值]  ); 2).建立已存在表的副本  create table emp1 as selec

git入門學習一(git安裝,刪改基本操作命令)

git 工作區 暫存區 版本庫 在當前目錄新建一個Git程式碼庫 git init (會多出.git資料夾) 設計提交程式碼時的使用者資訊 :git config --global  user.name zhangsan    git config --glob

Oracle 刪改基本操作

Oracle是甲骨文公司旗下的一款關係型資料庫,是一款較為主流的資料庫軟體,下面主要介紹一下oracle的一些基本操作 1.增加資料 增加資料的關鍵詞為insert into 其語法結構為 insert into 表名(欄位)values(對應的值),當要對全部內容進行新

mongodb php刪改基本操作

剛學習mongodb,現在網上的資料還比較少,讀了一本mongodb權威指南,介紹的內容不是很全面。七零八湊找了些對mongo資料庫的基本增刪改查操作。 $mongo = new Mongo(); $db = $mongo->selectDB('test'); $co

mongodb刪改基本操作

有的真想不到,在昆明這樣的地方居然也有企業在使用非關係型資料庫mongodb,因此無論如何都要掌握一點非關係資料庫的基本知識,這次我整理了一點mongodb最基本的增刪改查操作 1.插入資料 簡單的表結構可能就只是單列的json,但是如果情況比較複雜還可能出現巢狀的情況,這

jpa資料庫刪改基本操作

1.插入一條資料(儲存實體)save(T entity) 2.查詢一個特定實體findOne(Id) 3.刪除指定實體delete(T entity);delete(Id); 4.更新實體@Transaction@Modifying@Query("update Custom

【pandas】[2] DataFrame 基礎,建立DataFrame和刪改基本操作(1)

作者:lianghc 地址:http://blog.csdn.net/zutsoft         DataFrame 是pandas最常用的資料結構,類似於資料庫中的表,不過DataFrame不僅僅限制於2維,可以建立多維資料表。DataFrame既有行索引,也有列

MyBatis的刪改基本操作

MyBatis和Hibernate的使用基本一樣,區別在於Hibernate在Java程式碼中實現資料庫操作,整合度高;Mybatis在註解或者xml檔案中通過配置實現SQL語句,更加靈活 建立使用MyBatis的Java專案 1. 建立

MyBatis 學習總結 02 對表執行刪改(CRUD)操作 OLD

去除 dev ins tlist 只需要 獲取 exception ref ssi    可以對上一節中使用mybatis打開一次session的業務邏輯進行封裝,封裝的成工具類命名為: MyBatisUtil package com.mybatis.util;

數據庫表--刪改操作實例

數字電路 查看 varchar 數學 sna 成績 同學 part 及其 一、設置數據庫 包括四個表:學生表(Student)、課程表(Course)、成績表(Score)以及教師信息表(Teacher)。四個表的結構分別如表1-1的表(一)~表(四)所示,數據如表1-2的

Python字典中刪改操作

增:字典中的增加鍵值對與列表相差無幾,例:dic = {'name1':'tom'}    實現增加的操作:dic['name2'] = 'Jack'   注意不要忘記加''(上引號) 刪:三種方法,dic.pop('key'),可

python連線MongoDB資料庫方法及刪改操作小結。

Y9   建議安裝MongoDB視覺化工具“Robo 3T”,可以很直觀的看到對MongoDB操作後的資料。 1、‘Robo 3T’的安裝,網上很多途徑可下載,在此分享我使用的版本: 連結:https://pan.baidu.com/s/1EcjmUVkXz1GQeTXy2fMk

一、mybaitis的刪改簡單操作

1、匯入jar包 mysql-connector-java-5.1.7-bin.jar mybatis-3.2.7.jar 2、db.propertiese jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localho

JAVA資料管理系統(用ArrayList實現刪改操作)

通過查詢大量有關ArrayList操作的文章,終於將這個小東西寫完了。感覺心累。 //import java.util.ArrayList; //import java.util.List; //import java.util.Scanner;// I/O庫函式 /

spring結合mongodb刪改基本操作

## is查詢  這是按明確條件查詢例如:要查詢名字為Eric的記錄Query query=new Query();query.addCriteria(Criteria.where("name").is("Eric"));User users=mongoTemplate.fi

MongoDB刪改命令操作

1. 資料庫操作l  顯示所有資料庫showdbs顯示所有資料庫(預設有3個:admin、local、test)。admin和local會顯示出來,test沒有資料所以不顯示。l  開啟/建立資料庫use 資料庫名例如:use tb_user自動建立一個tb_user資料庫,