http://www.blogjava.net/freeman1984/archive/2009/11/18/302803.htmlhttp://blog.csdn.net/hpoi/article/details/4647767