LDAP-轻型目录访问协议,我不知道你会用什么目录服务器.但你最好去SUN的网站上下载JNDI Tutorial ,这个教材会对你有很大帮助.在学习的时候,最好还是用一用目录服务器,这样会加深理解.
解决方案 »
- JS中出现NaN问题怎么解决?
- mybatis的别名问题
- Spring整合hibernate自动创建表的问题
- java建立动态数组的问题
- 关于字符串问题~~
- logic:iterate提交问题...
- 关于struts应用,有经验者进来发表,莱鸟一起学习
- 关于struts的动态验证
- 应该怎样编写findPrimaryKey这个方法?
- spring如何做到新加一个功能(类),只要在XML中配一下就行
- 谁能告诉我,在JAVA中Integer如何转换成int,int如何转换成String??谢谢!!!
- 请教高手,8:00-22:00在线等待(jb7+weblogic7开发cmp,编译部署成功,最后用jsp调用时出现如下问题)
2.安装包含标准JNDI软件开发包(JDK1.3以上..)
3.开发步骤..包括LADP中的一些标准操作:
1)连接到LDAP服务器
2)访问LADP服务器(很多企业将其和邮件服务器整和作为验证)
3)搜索服务
4)添加新记录项
5)修改记录项
6)删除记录项
7)从LDAP服务器断开
举例如下:从LADP服务器(IPlanet)操作一个Person类
// Standard anonymous search
import java.util.Hashtable;
import java.util.Enumeration;import javax.naming.*;
import javax.naming.directory.*;public class JNDIAdd { // Initial context implementation
public static String INITCTX = "com.sun.jndi.ldap.LdapCtxFactory";
public static String MY_HOST = "ldap://localhost:389";
public static String MGR_DN = "uid=kvaughan, ou=People, dc=siroe, dc=com";
public static String MGR_PW = "bribery";
public static String MY_SEARCHBASE = "dc=siroe,dc=com"; //public static String MY_BASE = "ou=people,o=airius.com";
//public static String MY_DN = "uid=mewilcox"; public static void main(String args[]) {
try { // Hashtable for environmental information
Hashtable env = new Hashtable(); // Specify which class to use for our JNDI provider
env.put(Context.INITIAL_CONTEXT_FACTORY, INITCTX); // Specify host and port to use for directory service
env.put(Context.PROVIDER_URL, MY_HOST);
env.put(Context.SECURITY_AUTHENTICATION,"simple");
env.put(Context.SECURITY_PRINCIPAL,MGR_DN);
env.put(Context.SECURITY_CREDENTIALS,MGR_PW); // Get a reference to a directory context
DirContext ctx = new InitialDirContext(env);
Person p = new Person("mewilcox","Mark","Wilcox","ou=Accounting","[email protected]");
ctx.bind("uid=mewilcox,ou=People,dc=siroe,dc=com", p); } catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
}
删除操作:
import java.util.Hashtable;
import java.util.Enumeration;
import javax.naming.*;
import javax.naming.directory.*;public class JNDIDel { // initial context implementation
public static String INITCTX = "com.sun.jndi.ldap.LdapCtxFactory"; public static String MY_HOST = "ldap://localhost:389"; public static String MGR_DN = "uid=kvaughan, ou=People, dc=siroe, dc=com";
public static String MGR_PW = "bribery"; public static String MY_SEARCHBASE = "dc=siroe,dc=com"; public static String MY_ENTRY = "uid=mewilcox, ou=People, dc=siroe, dc=com"; public static void main(String args[]) {
try {
//Hashtable for environmental information
Hashtable env = new Hashtable(); //Specify which class to use for our JNDI provider
env.put(Context.INITIAL_CONTEXT_FACTORY, INITCTX); env.put(Context.PROVIDER_URL,MY_HOST);
env.put(Context.SECURITY_AUTHENTICATION,"simple");
env.put(Context.SECURITY_PRINCIPAL,MGR_DN);
env.put(Context.SECURITY_CREDENTIALS,MGR_PW); //Get a reference to a directory context
DirContext ctx = new InitialDirContext(env); ctx.destroySubcontext(MY_ENTRY);
} catch(Exception e) {
e.printStackTrace();
System.exit(1);
}
}
}
// Standard anonymous search
import java.util.Hashtable;
import java.util.Enumeration;import javax.naming.*;
import javax.naming.directory.*;public class JNDISearch { // Initial context implementation
public static String INITCTX = "com.sun.jndi.ldap.LdapCtxFactory";
public static String MY_HOST = "ldap://localhost:389";
public static String MY_SEARCHBASE = "dc=siroe,dc=com";
public static String MY_FILTER = "(sn=Carter)"; public static void main(String args[]) {
try { // Hashtable for environmental information
Hashtable env = new Hashtable(); // Specify which class to use for our JNDI provider
env.put(Context.INITIAL_CONTEXT_FACTORY, INITCTX); // Specify host and port to use for directory service
env.put(Context.PROVIDER_URL, MY_HOST); // Get a reference to a directory context
DirContext ctx = new InitialDirContext(env); // Specify the scope of the search
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE); // Perform the actual search
// We give it a searchbase, a filter and a the constraints
// containing the scope of the search
NamingEnumeration results = ctx.search(MY_SEARCHBASE,
MY_FILTER, constraints); // Now step through the search results
while (results != null && results.hasMore()) {
SearchResult sr = (SearchResult) results.next(); String dn = sr.getName();
System.out.println("Distinguished Name is " + dn); Attributes attrs = sr.getAttributes(); for (NamingEnumeration ne = attrs.getAll();
ne.hasMoreElements(); ) {
Attribute attr = (Attribute) ne.next();
String attrID = attr.getID(); System.out.println(attrID + ":");
for (Enumeration vals = attr.getAll();
vals.hasMoreElements(); ) {
System.out.println("\t" + vals.nextElement());
}
}
System.out.println("\n");
}
} catch (Exception e) {
e.printStackTrace();
System.exit(1);
}
}
}