易截截图软件、单文件、免安装、纯绿色、仅160KB

Java Doc 建议不要使用 JPasswordField.getText()

想得到用户在 Java Swing 中的 JPasswordField 控件中输入的密码内容,应该使用 JPasswordField.getPassword() ,而不是 JPasswordField.getText() 。因为安全的原因,JavaDoc 中就是如此建议的:
For security reasons, this method is deprecated. Use the getPassword method instead.
getPassword() 与 getText() 的差别在于 getPassword 返回的是一个 char[] ,getText() 返回一个 String 。
咋一想,要是有人想查看内存( 包括物理主存与交换文件 )里的内容,String 与 char[] 在安全上是没什么区别的。
但是两者最大的区别是不可变性。 String 是一个不可变的对象。一旦被分配内存空间,String 里的字符就不可改变了。如此,这个 String 对象还会在你使用完它后,还会内存中停留上一段时间。然而 char[] 就不一样了,你可以在使用完这个字符数组后,把所有的字符改成 '\0'。
My Code:
// HPasswordField.java 
package heyuqi.swing;
import java.util.Arrays;
import javax.swing.JPasswordField;
/** *//**
 *
 * @author heyuqi< yuqi.he@gmail.com>
 */
public class HPasswordField extends JPasswordField ......{
    /** *//**
     *
     * @param passwordField
     * @return
     */
    public boolean validatePassword( JPasswordField passwordField ) ......{
        // get the passwords from this two JPasswordFields
        char firstPassword[]  = this.getPassword();
        char secondPassword[] = passwordField.getPassword();
       
        boolean returnValue = validatePassword( firstPassword, secondPassword );
     &


相关文档:

java入门

 Java学习从入门到精通 
一、 JDK (Java Development Kit) 
JDK是整个Java的核心,包括了Java运行环境(Java Runtime Envirnment),一堆Java工具和Java基础的类库(rt.jar)。不论什么Java应用服务器实质都是内置了某个版本的JDK。因此掌握JDK是学好Java的第一步。最主流的J ......

Java之父:为Java发展惊奇 和脚本语言走得更近

十年前,Sun微系统公司将Java搬到了世人面前,这是首次协助企业建立具有前瞻性的思想的一款软件,随后Java迅猛扩散,深入到计算机业的几乎每个角落。这项技术的幕后英雄,就是本文采访的James Gosling。
上个世纪90年代初,Gosling发起并领导了一个名为Green的项目,此项目最终演变为Java。Java 的基本理念是创造一种可以 ......

Java操作Excel:book保护

    Excel的book保护是很常用的,主要是不想让别人修改Excel的时候用。这样能够避免恶意随便修改数据,提高数据的可行度。
    那么JAVA来实现设置book保护怎么做呢?
    查找了几种常见的JAVA操作Excel的一些包,大体结果如下:
    1. POI
  &nbs ......

JAVA编程中常见的一些低级错误

     JAVA与C++的一个很大区别就是JAVA不需要程序员去分配,释放内存。这在很大程度上减少了程序员的工作量,但或许正因为这个原因我们经常看到一些编程错误。
     例1:
         从数据库查询出结果list,然后做循环处理。
   ......

Java线程:线程栈模型与线程的变量

 
SCJP5学习笔记
 
要理解线程调度的原理,以及线程执行过程,必须理解线程栈模型。
线程栈是指某时刻时内存中线程调度的栈信息,当前调用的方法总是位于栈顶。线程栈的内容是随着程序的运行动态变化的,因此研究线程栈必须选择一个运行的时刻(实际上指代码运行到什么地方)。
 
下面通过一个示例性的 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号