| package com.dy.testServer.console; | 
|   | 
| import java.io.Console; | 
| import java.io.PrintWriter; | 
|   | 
| public class CommandConsole { | 
|      | 
|     private Console console ; | 
|     private PrintWriter prtWrt ; | 
|     private static final String myPassword = "123456" ; | 
|     private static final String commandPrefix1 = ">>" ; | 
|     private static final String commandPrefix2 = "$: " ; | 
|     private static String commandPrefix = commandPrefix1 + commandPrefix2 ; | 
|   | 
|      | 
|     public CommandConsole(Console console)throws Exception{ | 
|         this.console = console ;     | 
|         if(this.console == null){ | 
|             throw new Exception("严重错误,java控制台对象为空!"); | 
|         } | 
|         prtWrt = console.writer() ; | 
|     } | 
|   | 
|     /** | 
|      * 初始,检查并输出一些信息 | 
|      * @param args 参数 | 
|      * @throws Exception 异常 | 
|      */ | 
|     public void init(String[] args) throws Exception{ | 
|         PrintWriter prtWrt = console.writer() ; | 
|         if(args != null && args.length > 0){ | 
|             String str = "" ; | 
|             for(String s : args){ | 
|                 str += s ; | 
|             } | 
|             prtWrt.println("info:启动参数" + str); | 
|         } | 
|   | 
|         prtWrt.println("----------------------------------------"); | 
|         prtWrt.println("--                                    --"); | 
|         prtWrt.println("--    欢迎使用mwTest 服务控制端       --"); | 
|         prtWrt.println("--                                    --"); | 
|         prtWrt.println("----------------------------------------"); | 
|     } | 
|      | 
|     /** | 
|      * 执行控制台控制 | 
|      * @return 返回 | 
|      */ | 
|     public boolean clientConsole(){ | 
|         boolean exit = false ; | 
|         try { | 
|             this.login() ; | 
|             exit = this.doConsole(); | 
|         } catch (Exception e) { | 
|             e.printStackTrace(); | 
|         } | 
|         return exit ; | 
|     } | 
|      | 
|     private boolean login(){ | 
|         while (true) { | 
|             //String username = console.readLine("Username: "); | 
|             char[] password = console.readPassword(">>Password: "); | 
|             String passwordStr = String.valueOf(password) ; | 
|             if (passwordStr.equals("help")) { | 
|                 console.printf("密码是%1$s.\n", "123456"); | 
|                 // 使用后应立即将数组清空,以减少其在内存中占用的时间,增强安全性 | 
|                 password = null; | 
|             } else if(passwordStr.equals(myPassword)){ | 
|                 return true; | 
|             } | 
|         } | 
|     } | 
|      | 
|     private boolean doConsole(){ | 
|         boolean exit = false ; | 
|         while (!exit) { | 
|             String command = console.readLine(commandPrefix); | 
|             exit = Command.dealCommand(command, prtWrt) ; | 
|         } | 
|         return exit ; | 
|     } | 
|      | 
|     public static void changeCommandPrefix(String prefix){ | 
|         commandPrefix = commandPrefix1 + prefix ; | 
|     } | 
|     public static void recoverCommandPrefix(){ | 
|         commandPrefix = commandPrefix1 + commandPrefix2 ; | 
|     } | 
| } |