Java 如何避免LDAP搜索中的字段名?
我正在制作一个LDAP搜索应用程序。它工作正常,但在搜索结果中,它也给了我字段名 例: 如何避免打印字段名 谢谢Java 如何避免LDAP搜索中的字段名?,java,ldap,Java,Ldap,我正在制作一个LDAP搜索应用程序。它工作正常,但在搜索结果中,它也给了我字段名 例: 如何避免打印字段名 谢谢 public LdapContext getLdapContext() { LdapContext ctx = null; try { Hashtable<String, String> env = new Hashtable<String, String>(); env.put(Context.INITIAL_CONTEXT
public LdapContext getLdapContext() {
LdapContext ctx = null;
try {
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_AUTHENTICATION, "XXX");
env.put(Context.SECURITY_PRINCIPAL, "XXXX");
env.put(Context.SECURITY_CREDENTIALS, "XXXX");
env.put(Context.PROVIDER_URL, "XXXXX");
ctx = new InitialLdapContext(env, null);
System.out.println("Connection Successful.");
} catch (NamingException nex) {
System.out.println("LDAP Connection: FAILED");
nex.printStackTrace();
}
return ctx;
}
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
String[] attrIDs = { lastName, firstName, location,
telephoneNumber, jobTitle, division };
constraints.setReturningAttributes(attrIDs);
// First input parameter is search base, it can be
// "CN=Users,DC=Domain,DC=com"
// Second Attribute can be uid=username
NamingEnumeration<SearchResult> answer = ctx.search("OU= Users,DC=Domain,DC=com",
"sn=" + lastname, constraints);
public LdapContext getLdapContext(){
LdapContext ctx=null;
试一试{
Hashtable env=新的Hashtable();
环境放置(Context.INITIAL\u Context\u工厂,
“com.sun.jndi.ldap.LdapCtxFactory”);
环境保护(Context.SECURITY_认证,“XXX”);
环境put(Context.SECURITY_委托人,“XXXX”);
环境投入(Context.SECURITY_凭证,“XXXX”);
环境投入(Context.PROVIDER_URL,“XXXXX”);
ctx=新的InitialLdapContext(env,null);
System.out.println(“连接成功”);
}捕获(NamingException nex){
System.out.println(“LDAP连接:失败”);
nex.printStackTrace();
}
返回ctx;
}
SearchControls约束=新的SearchControls();
约束.setSearchScope(SearchControls.SUBTREE_范围);
String[]attrIDs={lastName,firstName,location,
电话号码、职务、部门};
约束。设置ReturningAttribute(属性ID);
//第一个输入参数是search base,它可以是
//CN=用户,DC=域,DC=com
//第二个属性可以是uid=username
Namingeumeration answer=ctx.search(“OU=Users,DC=Domain,DC=com”,
“sn=”+姓氏,限制条件);
一些代码显示我正在做什么,,,,请帮助LDAP没有字段,它有
属性描述,其中包含属性值。属性描述是OID的别名,例如,cn
和department
在显示属性的代码中,调用仅返回属性值的方法
也可以考虑使用JNDI而不是JNDI。JNDI不应用于新代码
另见
我只能假设您按照以下思路做了一些事情:
static void printAttrs(Attributes attrs) {
if (attrs == null) {
System.out.println("No attributes");
} else {
/* Print each attribute */
try {
for (NamingEnumeration<?> ae = attrs.getAll(); ae.hasMore();) {
Attribute attr = (Attribute) ae.next();
System.out.println("attribute: " + attr.getID());
// print each value
for (NamingEnumeration<?> e = attr.getAll(); e.hasMore(); System.out.println("value: " + e.next()));
}
} catch (NamingException e) {
e.printStackTrace();
}
}
}
您只需使用get
方法获取不带字段名的对象
例如:
System.err.println(attribs.get("cn")**.get()**);
谢谢我正在使用JAVA、、Windows xp、、在Liferay Portal、、Eclipse IDE、、Tomcat服务器上工作。除了连接失败之外,这里没有任何代码可以打印任何内容。如果你不透露代码的样子,帮助你是困难的,如果不是不可能的话。
public LdapContext getLdapContext() {
LdapContext ctx = null;
try {
Hashtable<String, String> env = new Hashtable<String, String>();
env.put(Context.INITIAL_CONTEXT_FACTORY,
"com.sun.jndi.ldap.LdapCtxFactory");
env.put(Context.SECURITY_AUTHENTICATION, "XXX");
env.put(Context.SECURITY_PRINCIPAL, "XXXX");
env.put(Context.SECURITY_CREDENTIALS, "XXXX");
env.put(Context.PROVIDER_URL, "XXXXX");
ctx = new InitialLdapContext(env, null);
System.out.println("Connection Successful.");
} catch (NamingException nex) {
System.out.println("LDAP Connection: FAILED");
nex.printStackTrace();
}
return ctx;
}
SearchControls constraints = new SearchControls();
constraints.setSearchScope(SearchControls.SUBTREE_SCOPE);
String[] attrIDs = { lastName, firstName, location,
telephoneNumber, jobTitle, division };
constraints.setReturningAttributes(attrIDs);
// First input parameter is search base, it can be
// "CN=Users,DC=Domain,DC=com"
// Second Attribute can be uid=username
NamingEnumeration<SearchResult> answer = ctx.search("OU= Users,DC=Domain,DC=com",
"sn=" + lastname, constraints);
System.err.println(attribs.get("cn")**.get()**);