LDAP查询分页,基于迭代器的查询分页

      LDAP服务器端可以支持分页查询,但是有个前提条件,需要客户端先发送按关键字排序的指令后,才能执行分页查询。排序的过程是比较耗费时间的,需要对服务器做很多优化的操作。

      我的方法是在迭代结果集的时候实现分页,见代码:

 

package ldap.page;

import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;

import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
import javax.naming.directory.DirContext;
import javax.naming.directory.SearchControls;
import javax.naming.directory.SearchResult;
import javax.naming.ldap.InitialLdapContext;

/**
 * LDAP分页查询,使用时需要异步统计返回结果集的总行数
 * @author sxl
 *
 */
public class LdapSearch {
	/**
	 * 根据条件查找指定DN的条目下的一层所有属性
	 * 
	 * @param dn
	 *            要查询的BaseDN名称
	 * @param filter
	 *            要查询的过滤字符串
	 * @param returnedAtts
	 *            要查找的属性
	 * @param start
	 *            开始行
	 * @param limit
	 *            分页大小,如果为-1,则返回结果集的总行数
	 * @return 符合查询结果的List
	 */
	public static List searchContextOneByPage(String dn, String filter, String[] returnedAtts, int start, int limit){
		DirContext context = getDirContext("url","username","password");
		if(context == null) return null;
        // 实例化一个搜索器
 		SearchControls constraints = new SearchContr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值