一、前言

关于基于jdk开发包javax.naming.directory.DirContext、javax.naming.directory.InitialDirContext目录协议定义LdapUtil工具类,对LDAP轻量目录访问协议数据进行保存、删除操作,详情代码示例部分。

二、代码示例import java.io.File;@b@import java.io.FileWriter;@b@import java.io.IOException;@b@import java.util.ArrayList;@b@import java.util.HashMap;@b@import java.util.Hashtable;@b@import java.util.Iterator;@b@import java.util.ResourceBundle;@b@import java.util.Set;@b@@b@import javax.naming.Context;@b@import javax.naming.NamingException;@b@import javax.naming.directory.BasicAttribute;@b@import javax.naming.directory.BasicAttributes;@b@import javax.naming.directory.DirContext;@b@import javax.naming.directory.InitialDirContext;@b@@b@public class LdapUtil {@b@@b@private static final ResourceBundle bundle = ResourceBundle.getBundle("ldap");@b@private static final String LDAP_USERNAME = bundle.getString("LDAP_USERNAME");@b@private static final String LDAP_PASSWORD = bundle.getString("LDAP_PASSWORD");@b@private static final String LDAP_IP = bundle.getString("LDAP_IP");@b@private static final String LDAP_PORT = bundle.getString("LDAP_PORT");@b@private static final String LDAP_ROOT = bundle.getString("LDAP_ROOT");@b@private static final String LDAP_OBJCLASS_NAME = bundle.getString("LDAP_OBJCLASS_NAME");@b@private static final String LDAP_ERROR_LOG_PATH = bundle.getString("LDAP_ERROR_LOG_PATH");@b@@b@/**@b@ * LDAP保存一条数据方法,字段名和值由hash来传入,hash的第一个键值对必须是dn@b@ * @param hash@b@ * @return@b@ */@b@public static HashMap save(HashMap hash){@b@Hashtable env = new Hashtable();@b@env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");@b@env.put(Context.PROVIDER_URL, "ldap://" + LDAP_IP + ":" + LDAP_PORT + "/" + LDAP_ROOT);@b@env.put(Context.SECURITY_AUTHENTICATION, "simple");@b@env.put(Context.SECURITY_PRINCIPAL, "cn=" + LDAP_USERNAME + "," + LDAP_ROOT);@b@env.put(Context.SECURITY_CREDENTIALS, LDAP_PASSWORD);@b@HashMap ret = new HashMap();@b@ArrayList array = new ArrayList();@b@DirContext ctx = null;@b@String dn = "";@b@StringBuffer errors = new StringBuffer();@b@try {@b@ctx = new InitialDirContext(env);@b@System.out.println("ldap连接成功");@b@BasicAttributes attrsbu = new BasicAttributes();@b@BasicAttribute objclassSet = new BasicAttribute("objectclass");@b@objclassSet.add(LDAP_OBJCLASS_NAME);@b@attrsbu.put(objclassSet);@b@Set s = hash.keySet();@b@Iterator i = s.iterator();@b@boolean flag = false;@b@if(i.hasNext()){@b@Object obj = i.next();@b@dn = obj.toString() + "=" + hash.get(obj);@b@flag = true;@b@}@b@while(i.hasNext()){@b@Object obj = i.next();@b@attrsbu.put(obj.toString(),hash.get(obj));@b@}@b@if(flag){@b@ctx.createSubcontext(dn, attrsbu);@b@}@b@else{@b@errors.append("没有传入DN");@b@array.add("没有传入DN");@b@}@b@} catch (javax.naming.AuthenticationException e) {@b@errors.append(e.getMessage());@b@e.printStackTrace();@b@array.add(e.getMessage());@b@} catch (Exception e) {@b@errors.append("LDAP连接出错:" + e.getMessage());@b@e.printStackTrace();@b@array.add("LDAP连接出错:" + e.getMessage());@b@}@b@if (ctx != null) {@b@try {@b@ctx.close();@b@}@b@catch (NamingException e) {@b@e.printStackTrace();@b@}@b@}@b@if(!errors.toString().equals("")){@b@File folder = new File(LDAP_ERROR_LOG_PATH);@b@if(folder.exists() || folder.mkdirs()){@b@File file = new File(LDAP_ERROR_LOG_PATH + "\\" + TimeUtil.getCurrentDateTime("-","-") + ".log");@b@FileWriter fw = null;@b@try {@b@fw = new FileWriter(file);@b@fw.write(dn + " -----> " + errors.toString());@b@} catch (IOException e) {@b@e.printStackTrace();@b@}@b@finally{@b@try {@b@fw.close();@b@} catch (IOException e) {@b@e.printStackTrace();@b@}@b@}@b@}@b@}@b@ret.put(dn,array);@b@return ret;@b@}@b@@b@public static HashMap delete(String dn){@b@Hashtable env = new Hashtable();@b@env.put(Context.INITIAL_CONTEXT_FACTORY,"com.sun.jndi.ldap.LdapCtxFactory");@b@env.put(Context.PROVIDER_URL, "ldap://" + LDAP_IP + ":" + LDAP_PORT + "/" + LDAP_ROOT);@b@env.put(Context.SECURITY_AUTHENTICATION, "simple");@b@env.put(Context.SECURITY_PRINCIPAL, "cn=" + LDAP_USERNAME + "," + LDAP_ROOT);@b@env.put(Context.SECURITY_CREDENTIALS, LDAP_PASSWORD);@b@HashMap ret = new HashMap();@b@ArrayList array = new ArrayList();@b@DirContext ctx = null;@b@StringBuffer errors = new StringBuffer();@b@try {@b@ctx = new InitialDirContext(env);@b@ctx.destroySubcontext(dn);@b@} catch (javax.naming.AuthenticationException e) {@b@errors.append(e.getMessage());@b@e.printStackTrace();@b@array.add(e.getMessage());@b@} catch (Exception e) {@b@errors.append("LDAP连接出错:" + e.getMessage());@b@e.printStackTrace();@b@array.add("LDAP连接出错:" + e.getMessage());@b@}@b@if (ctx != null) {@b@try {@b@ctx.close();@b@}@b@catch (NamingException e) {@b@e.printStackTrace();@b@}@b@}@b@if(!errors.toString().equals("")){@b@File folder = new File(LDAP_ERROR_LOG_PATH);@b@if(folder.exists() || folder.mkdirs()){@b@File file = new File(LDAP_ERROR_LOG_PATH + "\\" + TimeUtil.getCurrentDateTime("-","-") + ".log");@b@FileWriter fw = null;@b@try {@b@fw = new FileWriter(file);@b@fw.write(dn + " -----> " + errors.toString());@b@} catch (IOException e) {@b@e.printStackTrace();@b@}@b@finally{@b@try {@b@fw.close();@b@} catch (IOException e) {@b@e.printStackTrace();@b@}@b@}@b@}@b@}@b@ret.put(dn,array);@b@return ret;@b@}@b@@b@public static void main(String [] args){ @b@@b@LdapUtil.delete("loginname=wjm");@b@}@b@}

java ldap 工具_通过定义LdapUtil工具类实现JAVA关于LDAP协议目录数据保存和删除等操作代码示例...相关推荐

  1. java实现英文文件单词搜索系统_java对于目录下文件的单词查找操作代码实现

    这篇文章主要介绍了java对于目录下文件的单词查找操作代码实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 写入文件的目录.代码通过找目录下的文件 ...

  2. java写渗透工具_常用渗透测试工具使用tips

    (7)sqlmap(python脚本学习下) 经典sql注入工具 (这种针对参数的工具,不知道是不是扫描方式有问题,还是怎么着,怎么才能抓几个包,或者把常用点的包抓出来) 抓几个sqlmap的包 sq ...

  3. java 网站统计工具_基于B/S模式下的JAVA网站流量统计系统

    今日思考,完成一个网站流量统计系统项目,需要实现哪些功能? 此类项目常见描述如下: 传统的网站只是在页面上使用计数器进行简单的访问者数量的统计.随着网站运营规模的扩大,依靠这种简单的数量统计并不能真正 ...

  4. 使用mysql命令行的工具_[MySQL]命令行工具和基本操作

    一 MySQL命令行工具  (查看帮助 ---help,或 -?) 1)MySQL MySQL是一个简单的SQL外壳(有GNUreadline功能).它支持交互式和非交互式使用.当交互使用时,查询结果 ...

  5. 工作效率 工具_我使用的工具加快了我的工作流程,使我的工作效率更高

    工作效率 工具 by Egwuenu Gift 通过Egwuenu礼物 我使用的工具加快了我的工作流程,使我的工作效率更高 (The tools I use speed up my workflow ...

  6. 安卓打包工具_独立开发之工具篇

    本文介绍下目前开发中所用到的开发工具. 硬件篇: 2014年入手MacPro 小米5 iPhone 6s 两部手机主要用来测试和体验竞品. 目前最大问题就是电脑跟手机的存储空间不足,总需要去删除一些东 ...

  7. 最好用的_古书制作工具_古籍排版工具_古文排版_自动生成古书_多种古书风格_古籍制作工具_个性化书籍制作工具

    古书制作工具_古籍排版工具使用方法 前言 最好用的古书制作工具, 最好用的古籍排版工具, 最好用的古籍制作工具, 最好用的古文排版, 自动古书排版, 自动书籍排版, 自动生成古书, 多种古书风格 可自 ...

  8. 金士顿u盘分区工具_使用U盘工具给电脑硬盘快速分区教程

    导读:什么是硬盘分区?怎样使用u盘给硬盘分区?如何使用u深度u盘启动盘制作工具制作好的u盘启动盘给全新的硬盘分区?通过以下所介绍的u盘为硬盘分区的教程,教您使用u深度启动u盘怎么给硬盘分区,让您体验到 ...

  9. seo伪原创工具_文章伪原创工具哪个好用(伪原创工具有哪些)

    从事网站seo优化的工作基本上每天都会和文章打交道,因为网站的排名与网站的收录关系是非常大的,网站的收录又和文章息息相关,搜索引擎的胃口是比较喜欢新的内容.原创的内容,而对于一些文案功底比较没那么好的 ...

最新文章

  1. 平台型OA=高性价比OA?
  2. ubuntu 下安装memcache 以及php扩展
  3. 求从 1 到 100 之间所有奇数的平方和
  4. electron打包
  5. 链栈的入栈和出栈代码_代码简介:全栈开发仍然有效
  6. 匹配除中文和空格意外的正则写法
  7. C#(64位系统) 解决MySQLDriverCS未能加载文件或程序集,或它的某一个依赖项
  8. 编译程序遇到问题 relocation R_X86_64_32 against `.rodata' can not be used when making a shared object;...
  9. class type
  10. restlet client插件下载
  11. 如何成为一名优秀的关卡设计师?
  12. Base32 应用与原理解析
  13. 超炫酷的Bat脚本入门教程
  14. 计算机怎么算折扣价格,5折怎么算-商场打折背后的猫腻:满100减50和打5折哪个更划算?...
  15. 计算机的手机储存在哪里,手机wps文件保存在哪里?
  16. Cache架构以及X86ARM @Linux平台cache eviction功能测试
  17. Android代码实现新年贺卡动画
  18. 经济基础知识(初级)【5】
  19. css3 text-overflow制作固定区域的博客列表
  20. 《财报就像一本故事书》刘顺仁(一) 山西出版集团山西人民出版社

热门文章

  1. QQ登录IE下iframe跨域session和cookie失效问题的解决方案
  2. 好用的前端开发工具都有什么突出优势?
  3. fofa网络资产检索
  4. Codesys的软件PLC解决方案
  5. QQ聊天记录分析(R-3.5)
  6. 自考计算机应用与基础怎么考,自考计算机应用基础实践怎么考?
  7. 体验服和平精英服务器更新维护,和平精英体验服怎么进不去怎么办 进不去原因...
  8. 玩转Redis必备的几款运维工具,好用爆了~
  9. 产生随机字符串的方法
  10. 基于Pytorch的机器学习Regression问题实例(附源码)