link:http://blog.csdn.net/shirdrn/article/details/6359254 http://blog.csdn.net/java2000_wl/article/details/7408249