http://www.blogjava.net/baoyaer/articles/355040.html http://www.cnblogs.com/adolfmc/archive/2012/08/21/2648415.html