http://www.blogjava.net/chengang/archive/2006/07/13/57986.html http://blog.csdn.net/mrshan/article/category/230229