LDAP现在用的越来越多,所谓LDAP既Lightweight Directory Access Protocol。关于它的一些基本知识,我在这里就不做系统的介绍了,网上有很多的资料。我主要说一下在JAVA的语言环境中,怎样来操作LDAP。

在这里,我推荐两个工具:LDAPTemplate和JLDAP。 网上的资料比较少,而且不少都是E文的,可能英语不太好的朋友,就很难入门了。在这我把我的经验总结一下,和大家分享。 LDAPTemplate是基于Spring1.2.7来开发的,其用法和Spring的JDBCTemplate差不多。最初,我是用这个开源的框架来对LDAP进行操作的,但是后来由于开发工具的转变,由eclipse转到了RAD上,而RAD所用的JDK却不支持Spring1.2.7(看来网上的谣传没错,IBM总在某个阴暗的角落在和SUN作对),没办法,只好另辟蹊径。后来发现了JLDAP,经过一番研究,发现它用起来并不比LDAPTemplate复杂,但在对象持久化方面需要自己去做,而LDAPTemplate通过AttributeMappers就可以把查询到的结果转换成POJO了。下面来具体的说一下怎么用JLDAP。首先要去下载一下JLDAP,具体下载的地址可以上网去搜。下载下来以后,lib里面的是开发所要用到的包,doc里面是帮助文档API和示例程序。 先说说怎么查询,其实查询非常的简单,如果用过JDBC连数据库的话,那么连LDAP相比起来更加的简单。 首先建立一个LDAPConnection对象。这个对象也可以通过连接池PoolManager来获得。LDAPConnection con = new LDAPConnection();然后运行connect方法和bind方法。连接上LDAP以后,就可以通过search方法来查找数据了。示例程序如下:java 代码

LDAPConnection lc = new LDAPConnection();           try {                lc.connect("6.1.19.154",389);                lc.bind(LDAPConnection.LDAP_V3,"cn=xxx","xxxxxx");                LDAPSearchResults rs = lc.search("dc=excel,dc=com,dc=cn",LDAPConnection.SCOPE_SUB,"objectClass=*",null,false);               int count = 0;               while(rs.hasMore()){                    LDAPEntry entry = rs.next();                    System.out.println(entry.getDN());                    count++;                }                System.out.println("共有"+count+"条记录。");            } catch (LDAPException e) {    

            System.err.print("连接异常!    ");                e.printStackTrace();            }   

虽然LDAP主要是用来进行读操作的,但不可避免的,我们也要向其中添加一些新的数据。用JLDAP向LDAP服务器添加数据的操作也是非常简单的。

为什么说非常简单呢,因为大体上也就是分三步。第一步,连接LDAP服务器。第二步,建立一个要添加的新的实体LDAPEntry,并添加相应的属性。第三步,通过add方法向LDAP中添加实体。 首先说连接服务器。还是非常简单的三步:java 代码
LDAPConnection con = new LDAPConnection();
con.connect("hostname",hostport);
con.bind("version","DN","password");
连接后,可以建实体了,也就相当与为数据库添加一条新的记录。这里用到了几个类:LDAPEntry、LDAPAttribute和LDAPAttributeSet。首先建立一个LDAPAttributeSet,然后建立各种的LDAPAttribute,把他们add到LDAPAttributeSet中。然后建立一个LDAPEntry。其构造函数有两个参数,一个是这个LDAPEntry的DN,一个是他的属性集合,也就是LDAPAttributeSet。 最后,调用LDAPConnection实例化对象的add方法,把实体添加到服务器中。然后别忘了断开连接喔。整体的示例代码如下:java 代码

LDAPAttributeSet attributeSet = new LDAPAttributeSet();            attributeSet.add(new LDAPAttribute("objectclass", new String(                   "inetOrgPerson")));            attributeSet.add(new LDAPAttribute("cn", new String[] { "李",                   "Jim Smith", "Jimmy Smith" }));            attributeSet.add(new LDAPAttribute("givenname", new String[] { "测试",                   "Jim", "Jimmy" }));            attributeSet.add(new LDAPAttribute("sn", new String("Smith")));            attributeSet.add(new LDAPAttribute("telephonenumber", new String(                   "1 801 555 1212")));            attributeSet.add(new LDAPAttribute("mail",                   new String("JSmith@Acme.com")));            attributeSet.add(new LDAPAttribute("userpassword", new String(                   "newpassword")));            LDAPEntry entry = new LDAPEntry("cn=李,cn=Lizl,dc=excel,dc=com,dc=cn",                    attributeSet);            LDAPConnection con = new LDAPConnection();            con.connect("6.1.19.154", 389);            con.bind(LDAPConnection.LDAP_V3, "cn=XXX", "XXXXXX");            con.add(entry);            System.out.println("成功的添加了一条记录!");            con.disconnect();   这里来说一说怎么从LDAP中删除一个实体。 首先,连接LDAP服务器,然后通过DN来删除一个实体。示例代码如下:java 代码LDAPConnection con = new LDAPConnection();    con.connect("6.1.19.154",389);    con.bind(LDAPConnection.LDAP_V3,"cn=XXXX","XXXXXX");    con.delete("cn=JSmith,dc=excel,dc=com,dc=cn");    System.out.println("成功删除一条记录!");   

LDAP之三:利用开源框架LDAPTemplate和JLDAP访问LDAP相关推荐

  1. 利用Django-registration开源框架自定义适合自己应用的注册验证(1)

    长话短说,django可重用的的app其实还是有很多拘束,毕竟设计出来不是针对所有应用的.就比如说django-registration 这个开源框架吧,相信好多朋友会对它的功能感兴趣. 它实现了发邮 ...

  2. 15 个常用的python 开源框架

    注册登录 shaomine 博客园   首页   新随笔   联系   订阅 正在上传-重新上传取消​  管理 随笔 - 579  文章 - 1  评论 - 69  阅读 - 253万 15个最受欢迎 ...

  3. web开源框架大汇总

    博客地址:http://blog.csdn.net/chow__zh/article/details/51194817 Struts 项目简介信息 Struts是一个基于Sun J2EE平台的MVC框 ...

  4. Python量化交易开源框架:AmazingQuant

    1.简介 开源地址: https://github.com/zhanggao2013/AmazingQuant AmazingQuant是一款基于event-driven的量化回测交易开源框架,下图是 ...

  5. java开源框架总结

    Java开源框架集 Spring Framework [Java开源 J2EE框架] Spring 是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且 ...

  6. 最受欢迎 Top 12 Python 开源框架,你都用过吗?

    作者 | 学Python的阿勇 责编 | 夕颜 出品 | CSDN博客 今天给大家带来了12个在GitHub等开源网站中最受欢迎的Python开源框架.如果你正在学习python,那么这12个开源框架 ...

  7. 实践操作:六步教你如何用开源框架Tensorflow对象检测API构建一个玩具检测器

    TensorFlow对象检测API是一个建立在TensorFlow之上的开源框架,可以轻松构建,训练和部署对象检测模型. 到目前为止,API的性能给我留下了深刻的印象.在这篇文章中,我将API的对象设 ...

  8. 独家 | AutoFlip:智能化视频剪裁的开源框架(附链接)

    作者:Nathan Frey 翻译:张达敏 校对:和中华 本文约2500字,建议阅读5分钟 本文向大家介绍智能化视频剪裁的开源框架:AutoFlip. 标签:算法框架 前言 为电视和显示器拍摄制作的视 ...

  9. 飞桨深度学习开源框架2.0抢先看:成熟完备的动态图开发模式

    百度飞桨于近期宣布,深度学习开源框架2.0抢先版本正式发布,进入2.0时代.其中一项重大升级,就是推出更加成熟完备的命令式编程模式,即通常说的动态图模式.同时在该版本中将默认的开发模式定为动态图模式, ...

最新文章

  1. 《Python和Pygame游戏开发指南》——2.16 pygame.display.update()函数
  2. (四)Decorator设计模式解决GET/POST请求的乱码问题(转)
  3. C#中提示:System.Runtime.Serialization.SerializationException
  4. Attention注意力机制的前世今身
  5. redhat6 删除mysql_Red Hat enterprise linux 6卸载默认安装的 mysql
  6. linux 快速切换ip,linux-如何快速替换IP
  7. js小游戏---扫雷
  8. 湖北工业大学计算机导论考试试题,湖北工业大学计算机二级考试时间
  9. 了解Go编译处理(一)—— go tool
  10. ai黑白棋_AI的黑白镜
  11. 【常用软件】Ubuntu-划词翻译软件Stardict
  12. 良心分享 50 款程序员“神器级”的网站,你一定用得上,老少皆宜
  13. 东南亚痴狂诈骗的背后,意外暴露一个大型“围猎”程序员的现场
  14. Xilinx Virtex-5 FPGA CLB资源学习笔记
  15. 一、博士论文写作中的方法和思想
  16. 第七章(1.2)图像处理——人脸识别技术发展及实用方案设计
  17. npm下载包无法找到命令
  18. 魅蓝note2真机调试遇到的一个小问题
  19. CMD下创建Oracle数据库(以Oracle10g为例)
  20. 百度云服务器BCC安装ubuntu16.04 +python3.6配置uWSGI和Nginx 部署Django项目

热门文章

  1. iOS开发——手机号,密码,邮箱,身份证号,中文判断
  2. 乱谈数学--我理解的函数极限运算
  3. Python的ASCII, GB2312, Unicode , UTF-8区别
  4. LINQ TO LISTT 合并列表
  5. [Swift]LeetCode811. 子域名访问计数 | Subdomain Visit Count
  6. mysql 读写分离 ,mysql_proxy实现
  7. git 项目常用命令
  8. Tuxedo学习门户网站
  9. 【ASP.NET】判断访问网站的客户端是PC还是手机
  10. pivot 附近有语法错误,您可能需要将当前数据库的兼容级别设置为更高的值。...