jingman66 2017-10-26 02:56 采纳率: 0%
浏览 313

java 取ladp那边数据的时候如何写活

图片说明
代码如上,圈住的那个地方,是只获取到一个层级下边的,如何写可以循环获取同意层级下边的内容,,,,谢谢

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-07 02:31
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    要实现对LDAP目录中多个层次的数据进行迭代访问,你需要使用Java的javax.naming.directory.SearchResult类。这个类提供了一个方法next()用于遍历结果集中的元素,并且提供了几种方式来控制如何处理这些元素。

    以下是修改后的代码示例:

    import javax.naming.directory.Attributes;
    import javax.naming.directory.DirContext;
    
    /**
     * Example of how to iterate over all attributes in the LDAP search result.
     */
    public class LdapIterator {
    
        public static void main(String[] args) {
            try (DirContext ctx = new InitialDirContext(env)) {
                // ... 初始化上下文和搜索控制项
                NamingEnumeration<?> answer = ctx.search("ou=inke", "objectclass", null);
                while (answer.hasMoreElements()) {
                    Attributes attrs = (Attributes) answer.next();
                    System.out.println(attrs);
                }
            } catch (NamingException e) {
                e.printStackTrace();
            }
        }
    
        private static final String env = "test";
    
        private static final DirContext.ContextFactory envFactory =
                new InitialDirContext().getInitialContextFactory();
    
    }
    

    在这个例子中,我们创建了一个LdapIterator类,它包含一个main()方法。在main()方法中,我们首先初始化了一个DirContext对象(通过构造函数new InitialDirContext(env))。然后,我们调用search()方法并传入了要搜索的路径、对象类别和null作为过滤器。这样,search()就会返回一个NamingEnumeration,我们可以使用它的hasMoreElements()方法来检查是否有更多的结果,或者直接调用next()`方法来获取下一个结果。

    对于每个结果,我们都可以调用getAttribute()方法来获取属性,然后打印出来。请注意,这只是一个基本的例子,实际使用时可能需要根据你的具体需求进行调整。例如,你可能需要处理错误的情况,比如没有找到匹配的条目等。

    评论

报告相同问题?