Download the JDK
Search the Tutorials
Hide the TOC
Trail: Java Naming and Directory Interface(TM).
Lesson: Naming and Directory Operations
Section: Search
Naming and Directory Operations
Naming Exceptions
Lookup an Object
List the Context
Add, Replace or Remove a Binding
Rename
Create and Destroy Subcontexts
Attribute Names
Read Attributes
Modify Attributes
Add, Replace Bindings with Attributes
Search
Basic Search
Filters
Scope
Result Count
Time Limit
Trouble Shooting Tips
Home Page > Java Naming and Directory Interface(TM). > Naming and Directory Operations
Basic Search

> The simplest form of search requires that you specify the set of attributes that an entry must have and the name of the target context in which to perform the search.

> The following code creates an attribute set `matchAttrs`, which has two attributes `"sn"` and `"mail"`. It specifies that the qualifying entries must have a surname (`"sn"`) attribute with a value of `"Geisel"` and a `"mail"` attribute with any value. It then invokes `DirContext.search()` to search the context `"ou=People"` for entries that have the attributes specified by `matchAttrs`.

> >     // Specify the attributes to match
> >     // Ask for objects that has a surname ("sn") attribute with
> >     // the value "Geisel" and the "mail" attribute
> >     Attributes matchAttrs = new BasicAttributes(true); // ignore attribute name case
> >     matchAttrs.put(new BasicAttribute("sn", "Geisel"));
> >     matchAttrs.put(new BasicAttribute("mail"));

> >     // Search for objects that have those matching attributes
> >     NamingEnumeration answer = ctx.search("ou=People", matchAttrs);

> You can then print the results as follows.

> >     while (answer.hasMore()) {
> >         SearchResult sr = (SearchResult)answer.next();
> >         System.out.println(">>>" + sr.getName());
> >         printAttrs(sr.getAttributes());
> >     }

> `printAttrs()`is similar to the code in the `getAttributes()` example that prints an attribute set.

> Running this example produces the following result.

> >     # java SearchRetAll
> >     >>>cn=Ted Geisel
> >     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.com
> >     attribute: facsimiletelephonenumber
> >     value: +1 408 555 2329
> >     attribute: cn
> >     value: Ted Geisel
> >     attribute: telephonenumber
> >     value: +1 408 555 5252

> #### Returning Selected Attributes

> The previous example returned all attributes associated with the entries that satisfy the specified query. You can select the attributes to return by passing `search()` an array of attribute identifiers that you want to include in the result. After creating the `matchAttrs` as shown previously, you also need to create the array of attribute identifiers, as shown next.

> >     // Specify the ids of the attributes to return
> >     String[] attrIDs = {"sn", "telephonenumber", "golfhandicap", "mail"};

> >     // Search for objects that have those matching attributes
> >     NamingEnumeration answer = ctx.search("ou=People", matchAttrs, attrIDs);

> This example returns the attributes `"sn"`, `"telephonenumber"`, `"golfhandicap"`, and `"mail"` of entries that have an attribute `"mail"` and have a `"sn"` attribute with the value `"Geisel"`. This example produces the following result. (The entry does not have a `"golfhandicap"` attribute, so it is not returned.)

> >     # java Search
> >     >>>cn=Ted Geisel
> >     attribute: sn
> >     value: Geisel
> >     attribute: mail
> >     value: Ted.Geisel@JNDITutorial.com
> >     attribute: telephonenumber
> >     value: +1 408 555 5252

Previous page: Search
Next page: Filters