http://emilyzhou.blog.51cto.com/3632647/685387
http://blog.csdn.net/xiang_j2ee/article/details/7261147