http://blog.csdn.net/lastlasteddy/archive/2009/03/20/4008174.aspx http://www.blogjava.net/lucky/articles/33380.html#d0e185