ASP教程 PHP教程 JSP教程 CGI教程 XML教程 ASP.NET教程
  • JAVA教程
  • 当前位置:教程 > 程序设计 > JAVA教程 > 正文

    解读Spring LDAP帮助中的代码案例(一)

    编辑:教程网 来源:网络 时间:2013年08月15日 17:28
  • Spring LDAP

    由于公司最近要启用一个 LDAP项目,并要求去学习,(好复杂的一个目录服务器。。),还好代码不难,下面就解读下帮助中案例。纯属于个人理解而总结出来的,并非官方结论,仅供参考!!

    首先先说配置文件,一个简单的spring配置文件 注入到dao中

    <beans> 
       <bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource"> 
          <property name="url" value="ldap://localhost:389" /> 
          <property name="base" value="dc=example,dc=com" /><!-- 这里是服务的根地址, 可以在这里配置,也可在项目里配置,主要看项目要求-->
          <property name="userDn" value="cn=Manager" /> 
          <property name="password" value="secret" /> 
       </bean> 
       <bean id="ldapTemplate" class="org.springframework.ldap.core.LdapTemplate"> 
          <constructor-arg ref="contextSource" /> 
       </bean> 
       <bean id="personDao" class="com.example.dao.PersonDaoImpl"> 
          <property name="ldapTemplate" ref="ldapTemplate" /> 
       </bean> 
    </beans>
    

    帮助文档中开篇的那一大串的代码就不详细说,碰到再解释,下面为简化后的那段代码。

    package com.example.dao; public class PersonDaoImpl implements PersonDao { private LdapTemplate ldapTemplate; /*注入*/ public void setLdapTemplate(LdapTemplate ldapTemplate) { this.ldapTemplate = ldapTemplate; } /** 可返回所有根地址,对象类型为persopn的信息的cn属性值*/ public List getAllPersonNames() { /*search方法中设计到三个参数,第一个是dn(类似于路径url), * 这里为空是因为 我们之前XML中已经配置了根地址, * 第二个就是对象类型,第三个是要查询之后返回的信息*/ return ldapTemplate.search( "", "(objectclass=person)", new AttributesMapper() { public Object mapFromAttributes(Attributes attrs) throws NamingException { return attrs.get("cn").get(); } }); } }

    最后会得到一个List集合 里面存有"CN"对应的值。

    接下来就是第二章的简单增删改查功能,首先根据文档继续说下查找的功能,文档描述的 我看了N遍才弄懂(好笨。。)。

    上面说到search的方法需要三个参数,接下来就对它的这三个参数进行一个简单的封装。

    首先是封装dn,我理解为url地址。文档中是这样封装放在想在

    package com.example.dao; 
    import org.springframework.ldap.core.support.DistinguishedName; 
    import javax.naming.Name; 
    public class PersonDaoImpl implements PersonDao { 
      /*这里就是我之前在XML中提到的可以把根目录放在项目中使用*/
       public static final String BASE_DN = "dc=example,dc=com"; 
       /*定义个dn的方法,返回类型是Name形式*/
       protected Name buildDn(Person p) { 
          DistinguishedName dn = new DistinguishedName(BASE_DN);//初始化时可以把根写上,也可写放在下面。 
          dn.add("c", p.getCountry());   //跟前面的路径(国家) 
          dn.add("ou", p.getCompany());  //c前面的路径(公司) 
          dn.add("cn", p.getFullname()); //在ou前面的路径(你创建的该信息的路径) 
          return dn; //创建好之后就会返回一个dn可以直接放在search中 
       } 
    } 
    dn的样式大致是这样的 : 
    cn=Some Person, ou=Some Company, c=Sweden, dc=example, dc=com
    
    
  • 原文来自 教程网 转载请注明:http://www.websmill.com/chengxu/java/32313.html

  • 上一篇:Java Annotation 高级应用
  • 下一篇:解读Spring LDAP帮助中的代码案例(二)