日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Java密碼屏蔽輸入的實現(xiàn)方法

瀏覽:234日期:2024-07-02 16:33:24
內(nèi)容: 1 前言 大家知道,在登錄Microsoft Windows操作系統(tǒng)過程中,在登錄窗口中需要用戶輸入注冊用戶名稱和密碼。細心的讀者會發(fā)現(xiàn):用戶輸入的注冊用戶名稱內(nèi)容為原碼字符顯示,而注冊密碼內(nèi)容為掩碼字符顯示。例如,同樣在兩各文本區(qū)中輸入字符'a',在用戶名文本區(qū)中顯示的是字符'a',而在密碼區(qū)中顯示的字符為掩碼'*',這就是所謂的密碼屏蔽輸入。將輸入的密碼屏蔽回顯,不僅增強了用戶私有信息的安全性,更重要的是維護了計算機系統(tǒng)的穩(wěn)定性和安全性。 Java以其語言的面向?qū)ο竽芰Α⒏甙踩院蚃ava平臺的系統(tǒng)無關(guān)性等技術(shù)優(yōu)勢,在商務(wù)軟件開發(fā)過程中贏得了眾多程序設(shè)計人員的青睞。JDK在AWT和JFC類庫中定義了用于密碼字符屏蔽的應(yīng)用程序設(shè)計接口(API),使應(yīng)用系統(tǒng)開發(fā)人員在編寫圖形用戶界面程序時,能夠靈活地定義密碼回顯方式。但是,對于基于命令行方式的Java應(yīng)用程序,JDK沒有定義相應(yīng)的密碼屏蔽策略,程序設(shè)計人員必須編寫字符回顯控制代碼。本文將通過對實例代碼的分析,對基于JDK平臺開發(fā)Java應(yīng)用程序的密碼屏蔽輸入方法進行探討,主要內(nèi)容包括: ●AWT組件對象密碼屏蔽方法 ●JSwing組件對象密碼屏蔽方法 ●Java命令行程序密碼屏蔽方法 2 利用AWT組件實現(xiàn)密碼屏蔽輸入 Java抽象窗口工具包(Abstract Window Toolkit,AWT)是在JDK1.0版本中定義的用于編寫Java圖形用戶界面程序的應(yīng)用程序設(shè)計接口,程序設(shè)計人員可以利用該包中定義的多種類型組件對象,編寫具有用戶界面的應(yīng)用程序。 為了實現(xiàn)用戶輸入信息的屏蔽,可以利用AWT組件庫中定義的TextField對象,該對象的定義繼承結(jié)構(gòu)如下: java.lang.Object | +--java.awt.Component | +--java.awt.TextComponent | +--java.awt.TextField 在該對象中,定義了用于設(shè)置和維護用戶輸入字符回顯方式的方法,這些方法的定義形式為: char getEchoChar():獲取用戶定義的文本區(qū)回顯字符; boolean echoCharIsSet()判斷是否定義了回顯字符; void setEchoChar(char c):設(shè)置文本區(qū)回顯字符為字符c。 因此,在讀者編寫的Java程序中,可以在創(chuàng)建TextField對象實例后,例如上述方法控制文本區(qū)回顯字符的方式。下面的程序完整地演示了回顯字符的定義方式: //PasswordMaskingDemo.javaimport java.awt.*;import java.awt.event.*;import javax.swing.JOptionPane;public class PasswordMaskingDemo{public static void main(String args[]){ final Frame frmFrame = new Frame(); Panel pnlPanel = new Panel(); Label lblUsername = new Label('用戶名'); Label lblPassword = new Label('密碼'); final TextField txtUsername = new TextField('Anyomonus'); final TextField txtPassword = new TextField('', 8); txtUsername.setEditable(false); txtPassword.setEchoChar('*'); Button btnButton1 = new Button('登錄'); Button btnButton2 = new Button('其它用戶登錄'); Button btnButton3 = new Button('關(guān)閉'); btnButton1.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { if( (txtPassword.getText()).length() == 0 ) { JOptionPane.showMessageDialog(frmFrame, '密碼不能為空'); return; } txtPassword.setColumns(16); System.out.println('Anyomonus用戶的密碼:' +txtPassword.getText() ); } }); btnButton2.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { txtUsername.setEditable(true); } }); btnButton3.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { System.exit(0); } }); pnlPanel.add(lblUsername); pnlPanel.add(txtUsername); pnlPanel.add(lblPassword); pnlPanel.add(txtPassword); pnlPanel.add(btnButton1); pnlPanel.add(btnButton2); pnlPanel.add(btnButton3); frmFrame.add(pnlPanel); frmFrame.setTitle('演示TextField對象的應(yīng)用方法'); frmFrame.pack(); frmFrame.show();}} 該程序運行的窗口形式如下圖所示: IMG http://developer.ccidnet.com/pub/attachment/2003/6/197104.gif[/IMG]圖1 PasswordMaskingDemo.java程序運行窗口 在上述程序中,與文本區(qū)回顯控制相關(guān)的代碼為: final TextField txtPassword = new TextField('', 8);txtPassword.setEchoChar('*'); 在上面的代碼中,首先創(chuàng)建初始內(nèi)容為空、可輸入8個字符的TextField對象實例txtPassword后,利用TextField對象中定義的setEchoChar方法設(shè)置該文本區(qū)的回顯字符為星號'*',從而實現(xiàn)輸入字符的掩碼。因此總結(jié)為:可以利用TextField對象中定義的setEchoChar方法,實現(xiàn)AWT組件對象程序中的字符掩碼輸入和回顯控制。 3 利用JSwing組件對象實現(xiàn)密碼屏蔽輸入 JSwing組件對象是輕量級Java組件對象,其中定義了多種組件對象類型,而且其外觀也更加新穎。與AWT組件對象相對應(yīng),在JSwing組件對象中也定義了JTextField對象,用于用戶進行文本輸入。那么,讀者是否會聯(lián)想利用對象中也定義的setEchoChar方法定義回顯字符呢?實際情況不是這樣。在JTextField對象中沒有定義該方法,而是以JTextField為父對象,定義了用于進行密碼輸入的文本區(qū)對象JPasswordField,該對象的定義繼承結(jié)構(gòu)如下: java.lang.Object | +--java.awt.Component | +--java.awt.Container | +--javax.swing.JComponent | +--javax.swing.text.JTextComponent | +--javax.swing.JTextField | +--javax.swing.JPasswordField 在JPasswordField對象中,定義了多種類型用于控制字符回顯方式的方法,其中setEchoChar方法即用于定義文本區(qū)回顯字符,如下面代碼段所示: … …JPasswordField password = new JPasswordField(8);password.setEchoChar('*');… … 與AWT組件對象定義文本區(qū)的回顯方式類似,上述代碼創(chuàng)建了JPasswordField對象實例后,設(shè)置該對象的回顯字符為星號'*'。但是,讀者需要注意的是:在JSwing對象中,需要利用JPasswordField對象來管理用戶輸入文本。 4 Java命令行程序密碼屏蔽輸入實現(xiàn)方式 與基于AWT或者JSwing的圖形用戶界面程序相比,在基于命令行的Java程序中實現(xiàn)密碼屏蔽輸入要比較麻煩一些,原因在于JDK沒有提供任何基于文本的字符回顯控制方法,因此需要編寫相應(yīng)的控制代碼。基于通用性方面的考慮,在本文中將編寫用于屏蔽用戶輸入的對象InputMasking,該對象的定義如下: //InputMasking.javaimport java.io.*;public class InputMasking{ String getPassword(String initial) throws IOException { MaskingThread listeningthread = new MaskingThread(initial); Thread thread_instance = new Thread(listeningthread); String password = ''; thread_instance.start(); while (true) { char input = (char)System.in.read(); listeningthread.stopMasking(); if (input == 'r') { input = (char)System.in.read(); if (input == 'n')break; else continue; } else if(input == 'n') break; else password += input; } return password; }} 該對象在后臺啟動線程的控制下,從系統(tǒng)輸入設(shè)備中讀取字符并對該字符進行分析。如果遇到行結(jié)束標(biāo)志,則返回該線程獲取的字符串對象password。讀者一定會關(guān)心后臺線程對象MaskingThread的作用,該線程對象周期地刷新終端窗口,其目的在于屏蔽用戶輸入的字符,使該字符不能夠在窗口中顯示出來。該線程對象的定義為: //MaskingThread.javaimport java.io.*;class MaskingThread extends Thread { private boolean stop = false; private int index; private String initial; public MaskingThread(String initial) { this.initial = initial; } public void run() { while(!stop) { try { this.sleep(1); } catch (InterruptedException ex) { ex.printStackTrace(); } if (!stop) { System.out.print('r' + initial + ' r' + initial); } System.out.flush(); } } public void stopMasking() { this.stop = true; }} 在InputMasking對象和MaskingThread對象的配合下,使得基于命令行的Java應(yīng)用程序能夠?qū)崿F(xiàn)用戶輸入密碼字符的屏蔽,其核心方法是利用后臺線程時時刷新終端窗口,屏蔽用戶輸入字符。下面的CmdLineUtility對象即利用前面定義的兩個對象進行用戶輸入屏蔽,請讀者實際運行上述程序,以了解命令行Java程序屏蔽輸入的方式: //CmdLineUtility.javaimport java.io.*;public class CmdLineUtility{ public static void main(String argv[]) { InputMasking masking = new InputMasking();String password = null;try { password = masking.getPassword('請輸入登錄密碼: '); } catch(IOException ex) { ex.printStackTrace(); } System.out.println('您輸入的密碼為: ' + password); }} 5 結(jié)束語 本文著重講解了基于Java語言編寫圖形用戶界面程序和命令行程序中,實現(xiàn)用戶輸入字符屏蔽的方法。從文中內(nèi)容可以看出:對于圖形用戶界面程序,無論利用AWT組件對象,還是利用JSwing組件對象,均可以利用相應(yīng)的組件對象并調(diào)用對象實例中定義的方法,實現(xiàn)用戶輸入字符的屏蔽,從而簡化了代碼編寫難度。 對于基于命令行的Java程序,由于JDK中沒有定義相應(yīng)的Java對象,因此,需要編寫屏蔽用戶輸入的代碼,將用戶輸入不顯示在終端窗口中,從而實現(xiàn)用戶輸入屏蔽。 本文選自:賽迪網(wǎng) Java, java, J2SE, j2se, J2EE, j2ee, J2ME, j2me, ejb, ejb3, JBOSS, jboss, spring, hibernate, jdo, struts, webwork, ajax, AJAX, mysql, MySQL, Oracle, Weblogic, Websphere, scjp, scjd
標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产高清日韩| 亚洲高清不卡| 爽好久久久欧美精品| 国产精品亚洲一区二区三区在线观看| 青草av.久久免费一区| 只有精品亚洲| 日本午夜精品久久久| 欧美女激情福利| 欧美手机在线| 亚洲手机在线| 蜜臀久久久99精品久久久久久| 亚洲免费网址| 日韩av一区二区三区| 国产日韩欧美一区二区三区| 91精品国产自产精品男人的天堂 | 精品三级在线观看视频| 精品三级国产| 99tv成人| 亚洲精品无播放器在线播放| 国产精品视频一区二区三区四蜜臂 | 福利一区二区| 99久久夜色精品国产亚洲1000部| 欧美成人午夜| 日韩中出av| 久久久久亚洲精品中文字幕| 国产96在线亚洲| 蜜臀精品久久久久久蜜臀 | 不卡一区2区| 日韩国产欧美一区二区三区| 欧美一区影院| 99精品电影| 国产精品1区| 国产模特精品视频久久久久| 国产激情一区| 日韩精品亚洲一区二区三区免费| 欧美丝袜一区| 国产精品欧美在线观看| 一区在线视频观看| 国产 日韩 欧美 综合 一区 | 久久亚洲国产| 精品国产亚洲一区二区三区大结局| 国产精品老牛| 电影天堂国产精品| 中文字幕亚洲精品乱码| 蜜桃精品在线| 老色鬼精品视频在线观看播放| 午夜亚洲福利在线老司机| 国产不卡一区| 国产丝袜一区| 视频精品一区二区| 婷婷综合亚洲| 久久国产小视频| 91欧美国产| 国产精品草草| 欧美在线观看天堂一区二区三区| 激情综合自拍| 99视频精品全部免费在线视频| 国产不卡精品| 日韩激情综合| 日韩精品欧美大片| 蜜臀av性久久久久蜜臀aⅴ四虎| 在线日韩一区| 性欧美69xoxoxoxo| 尹人成人综合网| 九九在线精品| 国产一级久久| 先锋亚洲精品| 亚洲精品福利| 国产调教一区二区三区| 国产三级一区| 成人午夜网址| 91精品国产福利在线观看麻豆| 亚洲www免费| 成人三级高清视频在线看| 日韩国产一区二区三区| 精品日韩视频| 爽好多水快深点欧美视频| 色狠狠一区二区三区| 蜜桃av一区二区三区电影| 91欧美国产| 欧美韩一区二区| 久久久9色精品国产一区二区三区| 国产欧美88| 欧美13videosex性极品| 午夜在线视频一区二区区别 | 亚洲成人精品| 日韩欧美中文在线观看| 7777精品| 国产 日韩 欧美一区| 色婷婷成人网| 日韩中文影院| 亚洲人成亚洲精品| 激情视频网站在线播放色| 美女精品在线| 国产高潮在线| 亚洲精品观看| 日韩在线高清| 国产精品夜夜夜| 精品一区免费| 欧美国产极品| 麻豆9191精品国产| 亚洲天堂免费电影| 日韩影院精彩在线| 亚洲四虎影院| 精品国产一区二区三区性色av| 亚洲综合另类| 久久一区二区三区喷水| 国产精品久久久免费| 美女国产一区| 亚洲精品午夜av福利久久蜜桃| 精品美女在线视频| 国产欧美一区二区精品久久久| 国产精品97| 日韩在线中文| 麻豆精品av| 国产精品久久| 国产精品亚洲综合色区韩国| 美女精品网站| 日韩一区精品字幕| 国产婷婷精品| 日韩一级不卡| 99re国产精品| 久久大逼视频| 亚洲永久精品唐人导航网址| 国产视频一区欧美| 国产亚洲一区在线| 久久成人精品| 免费观看在线综合| 六月婷婷一区| 亚洲精品日本| 国产乱人伦丫前精品视频| 天堂久久一区| 日韩av不卡在线观看| 日韩av不卡一区二区| 国产伦精品一区二区三区在线播放| 日韩精品国产精品| 日本欧美韩国一区三区| 国产日韩亚洲| 欧美激情国产在线| 午夜欧美视频| 日韩**一区毛片| 久久精品国产在热久久| 精精国产xxxx视频在线野外 | 久久香蕉精品香蕉| 蜜桃av.网站在线观看| 午夜久久免费观看| 精品一区三区| 日韩精品91亚洲二区在线观看| 国产精品午夜一区二区三区| 国产毛片精品久久| 日韩精品一区二区三区免费观影 | 日韩一区二区三免费高清在线观看| 国产精品xxx在线观看| 日韩大片在线| 日本少妇一区二区| 日本不卡免费高清视频在线| 婷婷成人综合| 日本一不卡视频| 国产精品一国产精品k频道56| 婷婷激情一区| 911亚洲精品| 欧美~级网站不卡| 国产亚洲人成a在线v网站| 亚洲啊v在线| 人人爱人人干婷婷丁香亚洲| 日韩免费视频| 国产精品亚洲综合色区韩国| 精品一区在线| 激情黄产视频在线免费观看| 亚洲精品九九| 99久久久久国产精品| 国产欧美一区二区三区精品观看| 亚洲福利专区| 麻豆国产精品777777在线| 亚洲一区二区三区中文字幕在线观看 | 黄色日韩精品| 日本久久精品| 久久a爱视频| 日本91福利区| 蜜桃视频在线观看一区| 久久在线免费| 在线成人动漫av| 波多视频一区| 一区二区精品伦理...| 日韩精品亚洲专区| 美女精品在线观看| 日韩午夜在线| 免费日韩av| 99视频一区| 亚洲综合不卡| 综合激情网...| 日韩午夜免费| 天堂成人免费av电影一区| 欧美大黑bbbbbbbbb在线| 精品亚洲美女网站| 成人在线网站| 红桃视频国产精品| 亚洲精品女人| 91福利精品在线观看| 国产探花一区二区|