上回我门解读了第三章的简化操作,其实只要了解SpringJDBC操作 再了解Spring LDAP是一件非常容易得事,因为ldap使用的是最初的原理.

   我们先简单说下第四章是干什么万应的就OK了 不去细说它了  因为我觉的没必要 .

   第四章中所讲的就是先定义一个"查询执行者"的东西 里面有存放了dn(唯一的路径),filter(需要过滤的条件),new String[]{} (一个新建的数组,文中说是扩展,但我没使用过),还有一个就是SearchControls(查询控制器,里面储存了很多东西,比如查范围). 再定义用来接受结果的heandler,里面存放着获得属性构造器, 最后再使用search方法去实行它 ,执行成功返回handler里面的List结果集.


   接下来我们就解读下本讲核心....分页

首先上它的源码现解读已下:

/**定义一个分页的方法,传入的参数是一个cookie,我理解它是一个记录指针的意思,我门会根据它来获得本页信息和下一页信息*/
public PagedResult getAllPersons(PagedResultsCookie cookie) {
/**定义一个分页信息,里面存放着每页存放的条数和cookie*/
   PagedResultsRequestControl control = new PagedResultsRequestControl(PAGE_SIZE, cookie);
/**一个查询的控制器,主要是查询范围*/
   SearchControls searchControls = new SearchControls();
   searchControls.setSearchScope(SearchControls.SUBTREE_SCOPE);
/**下面就是讲上面的条件组合到search中进行查询,当然dn是必要的,这里是空,是因为他在xml中进行了配置,它还添加了filter,但是仔细看它 大家会出现疑问,我门之前做的所有的查询都会有一个,存放结果的属性构造器,但他这里是没有的,并且直接拿这个例子去使用也是行不同的,所以一会我们会在后面在写一些方法来修改这里*/
   List persons = ldapTemplate.search("", "objectclass=person", searchControls, control);
/**获得了之后就将信息都放到分页信息中返回,这里control.getCookie()是一个新的cookie,他存放的是下一页的指针*/
   return new PagedResult(persons, control.getCookie());
 }


上面说道search的方法少参数并且执行不了,那下面springLDAP给了我门一些可用的方法:

public void search(Name base, String filter,
   SearchControls controls, NameClassPairCallbackHandler handler, DirContextProcessor processor)
public void search(String base, String filter,
   SearchControls controls, NameClassPairCallbackHandler handler, DirContextProcessor processor)
                                                                                                             
public void search(Name base, String filter,
   SearchControls controls, AttributesMapper mapper, DirContextProcessor processor)
                                                                                                             
public void search(String base, String filter,
   SearchControls controls, AttributesMapper mapper, DirContextProcessor processor)
                                                                                                             
public void search(Name base, String filter,
   SearchControls controls, ContextMapper mapper, DirContextProcessor processor)
public void search(String base, String filter,
   SearchControls controls, ContextMapper mapper, DirContextProcessor processor)


使用这些search方法代替分页中的search,在配置给他们一个接收结果属性的构造器 你的分页信息就会成功运行起来了.