这些Java教程是针对JDK 8编写的。本页面中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
请查看Java语言更改以获取Java SE 9及后续版本中更新的语言特性的概述。
请查看JDK发行说明以了解所有JDK版本的新功能、增强功能以及已删除或弃用的选项的信息。
LDAP的“compare”操作允许客户端询问服务器是否具有指定条目的属性/值对。这使得服务器能够保持某些属性/值对的机密性(即,不公开供常规“搜索”访问),同时仍然允许客户端有限地使用它们。例如,某些服务器可能将此功能用于密码,尽管客户端在“compare”操作本身中传递明文密码是不安全的。
在JNDI中,可以使用以下方法的适当约束参数来实现此功能:
这里是一个导致使用LDAP的“compare”操作的示例。
// 属性的值
byte[] key = {(byte)0x61, (byte)0x62, (byte)0x63, (byte)0x64,
(byte)0x65, (byte)0x66, (byte)0x67};
// 设置搜索控件
SearchControls ctls = new SearchControls();
ctls.setReturningAttributes(new String[0]); // 不返回任何属性
ctls.setSearchScope(SearchControls.OBJECT_SCOPE); // 仅搜索对象
// 调用将使用LDAP的“compare”操作的搜索方法
NamingEnumeration answer = ctx.search("cn=S. User, ou=NewHires",
"(mySpecialKey={0})",
new Object[]{key}, ctls);
如果比较成功,结果枚举将包含一个名称为空且不包含任何属性的单个项。