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