这些Java教程是为JDK 8编写的。本页中描述的示例和实践不利用后续版本中引入的改进,并可能使用不再可用的技术。
请参阅Java语言更改以了解Java SE 9及其后续版本中更新的语言功能的摘要。
请参阅JDK发行说明以获取有关所有JDK版本的新功能、增强功能和已删除或已弃用选项的信息。
要从目录中读取对象的属性,使用 DirContext.getAttributes() 方法,并传递要获取属性的对象的名称。假设命名服务中的对象名称为 "cn=Ted Geisel, ou=People"。要检索此对象的属性,您需要编写类似以下示例的代码
:
Attributes answer = ctx.getAttributes("cn=Ted Geisel, ou=People");
然后,您可以按以下方式打印此结果的内容。
for (NamingEnumeration ae = answer.getAll(); ae.hasMore();) { Attribute attr = (Attribute)ae.next(); System.out.println("attribute: " + attr.getID()); /* 打印每个值 */ for (NamingEnumeration e = attr.getAll(); e.hasMore(); System.out.println("value: " + e.next())) ; }
这将产生以下输出。
# java GetattrsAll attribute: sn value: Geisel attribute: objectclass value: top value: person value: organizationalPerson value: inetOrgPerson attribute: jpegphoto value: [B@1dacd78b attribute: mail value: Ted.Geisel@JNDITutorial.example.com attribute: facsimiletelephonenumber value: +1 408 555 2329 attribute: telephonenumber value: +1 408 555 5252 attribute: cn value: Ted Geisel
要读取选择的属性子集,您需要提供一个字符串数组,其中包含要检索的属性的属性标识符。
// 指定要返回的属性的标识符 String[] attrIDs = {"sn", "telephonenumber", "golfhandicap", "mail"}; // 获取所请求的属性 Attributes answer = ctx.getAttributes("cn=Ted Geisel, ou=People", attrIDs);
此示例
请求获取对象 "cn=Ted Geisel, ou=People" 的 "sn"、"telephonenumber"、"golfhandicap" 和 "mail" 属性。此对象具有除 "golfhandicap" 属性之外的所有属性,因此答案中返回了三个属性。以下是示例的输出:
# java Getattrs attribute: sn value: Geisel attribute: mail value: Ted.Geisel@JNDITutorial.example.com attribute: telephonenumber value: +1 408 555 5252