当前位置:  技术问答>java相关

谁能给些JAVA操纵LDAP的例子?

    来源: 互联网  发布时间:2015-05-02

    本文导语:  谢了。 | import javax.naming.*; import java.io.*; import java.util.*; /**  * Interactive directory structure browser.  */ public class Browser { /**  * Main() is just a wrapper that starts the directory browsing.  */    ...

谢了。

|
import javax.naming.*;
import java.io.*;
import java.util.*;

/**
 * Interactive directory structure browser.
 */

public class Browser {
/**
 * Main() is just a wrapper that starts the directory browsing.
 */
     public static void main (String[] args) {
try {
new Browser().browse();
}catch (Exception e) {
System.err.println(e);
e.printStackTrace();
}
}

// Initial Context
protected Context ctx;

// This JNDI Name object is used to track the current

// context (folder) we're in as we traverse the directory tree

protected Name currName;

// We use a NameParser to generate Name objects for us.

// A NameParser knows how to construct a Name using

// a proprietary service provider syntax, such as

// "c:winnt" for the File System service provider, or

// "cn=Ed Roman, ou=People, o=Airius.com" for the LDAP

// service provider.

protected NameParser parser;

/*

 * Constructor called from main().  Initializes things.

 */

public Browser() throws Exception {

  /*

 * 1) Create the initial context.  Parameters are

   *    supplied in the System properties.

 */

ctx = new InitialContext(System.getProperties());

 

/*

   * 2) Get the NameParser from the service provider.

 */

parser = ctx.getNameParser("");

 

/*

 * 3) Use the NameParser to create the initial location

 *    of where we are in the directory structure.  Since

 *    the NameParser is service provider specific, the

 *    resulting Name object will be formatted to a

 *    specific directory syntax.

 */

currName = parser.parse("");

}



/**

 * Call to begin browsing the file system directory structure.

 * This method isn't important, it just interacts with the user.

 */

public void browse() {



/*

 * Start reading input from standard input

 */

String line = null, command = null, args = null;

StringTokenizer tokens = null;

                BufferedReader reader =

 new BufferedReader(new InputStreamReader(System.in));



                while (true) {



/*

 * Print prompt, read next input line,

 * and get command

 */

try {

System.out.println();

System.out.print(currName + "> ");

                         line = reader.readLine();

System.out.println();

                         tokens =

 new StringTokenizer(line, " ", false);

                       

// Get command.  e.g. "cd" in "cd .."

command = tokens.nextToken();



// Get arguments.  e.g. ".." in "cd .."

if (tokens.hasMoreElements()) {

args = line.substring(

 command.length()+1,

 line.length());

}

}

catch (Exception e) {

continue;

}



/*

 * Do case analysis based upon command.  Call

 * the corresponding JNDI function.

 */

try {

if (command.equals("ls")) {

ls();

}

else if (command.equals("mv")) {

/*

 * Figure out the name of the

 * context the user is trying

 * to rename (mv)

 */

String oldStr = null,

       newStr = null;

try {

StringTokenizer argtokens = new StringTokenizer(args, " ", false);

oldStr = argtokens.nextToken();

newStr = argtokens.nextToken();

}

catch (Exception e) {

throw new Exception("Syntax: mv  ");

}



mv(oldStr, newStr);

}

else if (command.equals("cd")) {

cd(args);

}

else if (command.equals("mkdir")) {

mkdir(args);

}

else if (command.equals("rmdir")) {

rmdir(args);

}

else if (command.equals("cat")) {

cat(args);

}

else if (command.equals("quit")) {

System.exit(0);

}

else {

System.out.println("Syntax: [ls|mv|cd|mkdir|rmdir|cat|quit] [args...]");

}

}

catch (Exception e) {

e.printStackTrace();

}

}

}



/**

 * Lists the contents of the current context (folder)

 */

private void ls() throws Exception {

// Get an enumeration of Names bound to this context

NamingEnumeration e = ctx.list(currName);



// Each enumeration element is a NameClassPair.

// Print the Name part.

while (e.hasMore()) {

NameClassPair p = (NameClassPair) e.next();

System.out.println(p.getName());

}

}



/**

 * Navigate the directory structure

 */

private void cd(String newLoc) throws Exception {

if (newLoc == null) {

throw new Exception("You must specify a folder");

}



// Save the old Name, in case the user tries to cd

// into a bad folder.

Name oldName = (Name) currName.clone();



try {

/*

 * If the user typed "cd ..", pop up one

 * directory by removing the last element from

 * the Name.

 */

if (newLoc.equals("..")) {

if (currName.size() > 0) {

currName.remove(currName.size()-1);

}

else {

System.out.println(

 "Already at top level.");

}

}



/*

 * Otherwise, the user typed "cd ".  Go

 * deeper into the directory structure.

 *

 * Note that we use "addAll()" which will add every

 * atomic folder name into the total name.  This means

 * when we type "cd .." later, we will only traverse

 * down one folder.

 */

else {

currName.addAll(parser.parse(newLoc));

}



/*

 * Confirm our traversal by trying to do a lookup()

 * operation after we've popped out a directory.  If

 * lookup() fails, we need to restore the directory

 * Name to what it was, and throw an exception.

 */

ctx.lookup(currName);

}

catch (Exception e) {

currName = oldName;

throw new Exception("Cannot traverse to desired directory: " + e.toString());

}

}



/**

 * Renames (moves) one context to a new name.

 *

 * @param oldStr the old context

 * @param newStr the new context

 */

private void mv(String oldStr, String newStr) throws Exception {



/*

 * Navigate to the current context (folder)

 */

Context currCtx = (Context) ctx.lookup(currName);



/*

 * Rename the subcontext

 */

currCtx.rename(oldStr, newStr);

}



/**

 * Makes a subfolder (subcontext)

 */

private void mkdir(String str) throws Exception {

Context currCtx = (Context) ctx.lookup(currName);

currCtx.createSubcontext(str);

}



/**

 * Removes a subfolder (subcontext)

 */

private void rmdir(String str) throws Exception {

Context currCtx = (Context) ctx.lookup(currName);

currCtx.destroySubcontext(str);

}



/**

 * displays a file (specific to File System service provider)

 */

private void cat(String fileStr) throws Exception {



/*

 * Append the filename to the folder string

 */

Name fileName = (Name) currName.clone();

fileName.addAll(parser.parse(fileStr));



/*

 * Use JNDI to get a File Object reference

 */

File f = (File) ctx.lookup(fileName);



/*

 * Print out file contents

 */

         FileReader fin = new FileReader(f);

         Writer out = new PrintWriter(System.out);

         char[] buf = new char[512];

         int howmany;

         while ((howmany = fin.read(buf)) >= 0) {

         out.write(buf, 0, howmany);

}

out.flush();

fin.close();

}

}


    
 
 

您可能感兴趣的文章:

  • Java 字节码操纵框架 ASM
  • 各位高手:怎样用java applet 操纵DHTML ? 恳请指教,高分在所不惜,要多少加多少!!
  • 烦人:用Java操纵mySQL数据库时的中文字符处理。
  • java操作excel2007文档介绍及代码例子
  • 100分求java +VC6.0使用JNI的最简单例子
  • 学习design pattern,苦于没有java代码的例子,高手指点
  • java初学看什么例子比较好。
  • 大家能否推荐几个学习java的经典例子?
  • 如何用JAVA 将一个目录(包括子目录)下所有的文件名列出来呀,举个例子,d:java
  • java sdk中的例子中 *.java 用写字板打开不能自动换行,不知它用什么文本编辑器?
  • 哪有java例子下载?!!!
  • 能否给个在JSP页面中用JAVA画线条和矩形的简单例子,谢谢!
  • Java怎么调用存储过程?给个例子吧?
  • 在JAVA下如何实现用户输入数据,像C的SCANF一样,给个例子吧
  • 请问java里怎么用goto语句??举个例子,好吗?谢谢
  • 谁有完整的java在linux下读excel的完整下载包URL,例子,文档,很急!!!!多少分都行
  • 一个JAVA继承的问题(Thinking in JAVA里的一个例子)
  • 请问:哪里有java所有类包的介绍,用法,及所有类的用途,用法,例子等的书或帮助的下载?
  • 用java开发过的比较优秀的大型系统有哪些,望高手给举几个例子啊
  • 那里有利用JAXP 1.2处理XML(基于XML Schema,而不是DTD)的JAVA程序例子!!! 200分!!!
  • 请问谁有《java2核心技术 卷I:基础知识》书中例子的源代码?急需!!!
  • java 连接Redis的小例子
  • 如何实现在java界面程序中向数据库添加记录,能不能给你例子??
  • Java递归 遍历目录的小例子
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • java命名空间javax.naming.ldap类ldapname的类成员方法: equals定义及介绍
  • UnboundID LDAP SDK for Java
  • java命名空间javax.naming.ldap接口extendedresponse的类成员方法: getencodedvalue定义及介绍
  • JAVA_基本LDAP操作实例
  • java命名空间javax.naming.ldap类ldapname的类成员方法: isempty定义及介绍
  • java命名空间javax.naming.ldap接口control的类成员方法: getencodedvalue定义及介绍
  • java命名空间javax.naming.ldap接口extendedresponse的类成员方法: getid定义及介绍
  • java命名空间javax.naming.ldap类sortresponsecontrol的类成员方法: getresultcode定义及介绍
  • java命名空间javax.naming.ldap接口extendedrequest的类成员方法: getencodedvalue定义及介绍
  • java命名空间javax.naming.ldap类ldapname的类成员方法: endswith定义及介绍
  • java命名空间javax.naming.ldap接口extendedrequest的类成员方法: getid定义及介绍
  • java命名空间javax.naming.ldap类ldapname的类成员方法: add定义及介绍
  • java命名空间javax.naming.ldap类ldapname的类成员方法: addall定义及介绍
  • java命名空间javax.naming.ldap类ldapname的类成员方法: startswith定义及介绍
  • java命名空间javax.naming.ldap接口ldapcontext的类成员方法: reconnect定义及介绍
  • java命名空间javax.naming.ldap接口control的类成员方法: iscritical定义及介绍
  • java命名空间javax.naming.ldap类ldapname的类成员方法: tostring定义及介绍
  • java命名空间javax.naming.ldap类basiccontrol的类成员方法: id定义及介绍
  • java命名空间javax.naming.ldap类basiccontrol的类成员方法: criticality定义及介绍
  • java命名空间javax.naming.ldap类ldapname的类成员方法: getprefix定义及介绍
  • java命名空间javax.naming.ldap类ldapname的类成员方法: hashcode定义及介绍
  • java命名空间java.sql类types的类成员方法: java_object定义及介绍
  • 我想学JAVA ,是买THINK IN JAVA 还是JAVA2核心技术:卷1 好???
  • java命名空间java.awt.datatransfer类dataflavor的类成员方法: imageflavor定义及介绍
  • 请问Java高手,Java的优势在那里??,Java主要适合于开发哪类应用程序
  • java命名空间java.lang.management类managementfactory的类成员方法: getcompilationmxbean定义及介绍
  • 如何将java.util.Date转化为java.sql.Date?数据库中Date类型对应于java的哪个Date呢
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getlibrarypath定义及介绍
  • 谁有电子版的《Java编程思想第二版(Thinking in java second)》和《Java2编程详解(special edition java2)》?得到给分
  • java命名空间java.lang.management接口runtimemxbean的类成员方法: getstarttime定义及介绍
  • 本人想学java,请问java程序员的待遇如何,和java主要有几个比较强的方向


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3