| New file | 
|  |  |  | 
|---|
|  |  |  | 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 ; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|