我正在尝试查询LDAP服务器,以根据用户提交的4个ID中的一个返回目录条目。我创建了一个Info对象来存储LDAP数据,但是如何检索数据然后将其输出回格式化表中的用户?
答案 0 :(得分:3)
您应该使用JNDI进行查询,一个简单的教程是:
http://www.stonemind.net/blog/2008/01/23/a-simple-ldap-query-program-in-java/
但这是应该帮助你的主要部分:
String url = "ldap://directory.cornell.edu/o=Cornell%20University,c=US";
Hashtable env = new Hashtable();
env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.PROVIDER_URL, url);
DirContext context = new InitialDirContext(env);
SearchControls ctrl = new SearchControls();
ctrl.setSearchScope(SearchControls.SUBTREE_SCOPE);
NamingEnumeration enumeration = context.search("", query, ctrl);
while (enumeration.hasMore()) {
SearchResult result = (SearchResult) enumeration.next();
Attributes attribs = result.getAttributes();
NamingEnumeration values = ((BasicAttribute) attribs.get(attribute)).getAll();
while (values.hasMore()) {
if (output.length() > 0) {
output.append("|");
}
output.append(values.next().toString());
}
}
答案 1 :(得分:0)
您需要使用JNDI来查询LDAP服务器。看一下例子here。但请不要在JSP中执行此操作。这将需要Java代码,而JSP不应包含Java代码。见How to avoid Java code in JSP files?
答案 2 :(得分:0)
同意,你不应该在JSP中使用Java,这是不好的形式。另外,我建议使用UnboundID LDAP SDK而不是JNDI,它更容易,更快,更好,更清晰。