直接正题
一、INewsDao.java(DAO接口):
二、dao实现类,因为第13行中q.list().get(0)的返回值为long,所以转换一下。
三、INewsService.java业务接口,添加方法
四、业务实现类代码,注意修改参数
五、action代码:
以及上面两个的get()、set()方法。
这个6,是每页6个数据,可以通过页面动态传值。
六、页面代码
1、显示代码:
2、分页:
七、PageBean文件
OK,完工。
一、INewsDao.java(DAO接口):
1
package
cn.dy.dao;
2
3 import java.util.List;
4 import cn.dy.bean.News;
5
6 public interface INewsDao {
7
8 // 其他代码省略
9![](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
10
11 // 分页查询
12 public List < News > queryForPage(String hql, int offset, int length);
13
14 // 总记录条数
15 public int getCount(String hql);
16 }
17
2
3 import java.util.List;
4 import cn.dy.bean.News;
5
6 public interface INewsDao {
7
8 // 其他代码省略
9
![](https://i-blog.csdnimg.cn/blog_migrate/9b8a8a44dd1c74ae49c20a7cd451974e.gif)
10
11 // 分页查询
12 public List < News > queryForPage(String hql, int offset, int length);
13
14 // 总记录条数
15 public int getCount(String hql);
16 }
17
二、dao实现类,因为第13行中q.list().get(0)的返回值为long,所以转换一下。
1
@SuppressWarnings(
"
unchecked
"
)
2 @Override
3 public List < News > queryForPage(String hql, int offset, int length) {
4 Query q = factory.getCurrentSession().createQuery(hql);
5 q.setFirstResult(offset);
6 q.setMaxResults(length);
7 return q.list();
8 }
9
10 @Override
11 public int getCount(String hql) {
12 Query q = factory.getCurrentSession().createQuery(hql);
13 return Integer.parseInt(q.list().get( 0 ).toString());
14 }
2 @Override
3 public List < News > queryForPage(String hql, int offset, int length) {
4 Query q = factory.getCurrentSession().createQuery(hql);
5 q.setFirstResult(offset);
6 q.setMaxResults(length);
7 return q.list();
8 }
9
10 @Override
11 public int getCount(String hql) {
12 Query q = factory.getCurrentSession().createQuery(hql);
13 return Integer.parseInt(q.list().get( 0 ).toString());
14 }
三、INewsService.java业务接口,添加方法
public PageBean queryForPage(int pageSize, int currentPage);
四、业务实现类代码,注意修改参数
1
@Override
2 public PageBean queryForPage( int pageSize, int page) {
3 String hql = " select count(*) from News " ;
4 int count = newsDao.getCount(hql); // 总记录数
5 int totalPage = PageBean.countTotalPage(pageSize, count); // 总页数
6 int offset = PageBean.countOffset(pageSize, page); // 当前页开始记录
7 int length = pageSize; // 每页记录数
8 int currentPage = PageBean.countCurrentPage(page);
9 List < News > list = newsDao.queryForPage( " from News " , offset, length); // 该分页的记录
10 // 把分页信息保存到Bean中
11 PageBean pageBean = new PageBean();
12 pageBean.setPageSize(pageSize);
13 pageBean.setCurrentPage(currentPage);
14 pageBean.setAllRow(count);
15 pageBean.setTotalPage(totalPage);
16 pageBean.setList(list);
17 pageBean.init();
18 return pageBean;
19 }
2 public PageBean queryForPage( int pageSize, int page) {
3 String hql = " select count(*) from News " ;
4 int count = newsDao.getCount(hql); // 总记录数
5 int totalPage = PageBean.countTotalPage(pageSize, count); // 总页数
6 int offset = PageBean.countOffset(pageSize, page); // 当前页开始记录
7 int length = pageSize; // 每页记录数
8 int currentPage = PageBean.countCurrentPage(page);
9 List < News > list = newsDao.queryForPage( " from News " , offset, length); // 该分页的记录
10 // 把分页信息保存到Bean中
11 PageBean pageBean = new PageBean();
12 pageBean.setPageSize(pageSize);
13 pageBean.setCurrentPage(currentPage);
14 pageBean.setAllRow(count);
15 pageBean.setTotalPage(totalPage);
16 pageBean.setList(list);
17 pageBean.init();
18 return pageBean;
19 }
五、action代码:
private int page;
private PageBean pageBean;
private PageBean pageBean;
以及上面两个的get()、set()方法。
public String getPageList() {
this.pageBean = newsService.queryForPage(6, page);
return "newsList";
}
this.pageBean = newsService.queryForPage(6, page);
return "newsList";
}
这个6,是每页6个数据,可以通过页面动态传值。
六、页面代码
1、显示代码:
1
<
s:iterator
value
="pageBean.list"
>
2 < tr >
3 < td class ="tocenter" >
4 < s:property value ="newsId" />
5 </ td >
6 < td colspan ="5" >
7 < s:property value ="newsContent" />
8 </ td >
9 < td class ="tocenter" >
10 < s:property value ="beginTime" />
11 </ td >
12 </ tr >
13 </ s:iterator >
2 < tr >
3 < td class ="tocenter" >
4 < s:property value ="newsId" />
5 </ td >
6 < td colspan ="5" >
7 < s:property value ="newsContent" />
8 </ td >
9 < td class ="tocenter" >
10 < s:property value ="beginTime" />
11 </ td >
12 </ tr >
13 </ s:iterator >
2、分页:
1
<
tr
>
2 < td width ="13%" class ="tocenter" >
3 共
4 < s:property value ="pageBean.totalPage" />
5 页
6 </ td >
7 < td width ="17%" class ="tocenter" >
8 共
9 < s:property value ="pageBean.allRow" />
10 条记录
11 </ td >
12 < td width ="15%" class ="tocenter" >
13 当前第
14 < s:property value ="pageBean.currentPage" />
15 页
16 </ td >
17 < td colspan ="4" width ="55%" class ="tocenter" >
18 < s:if test ="%{pageBean.currentPage == 1}" > 第一页 上一页 </ s:if >
19 < s:else >
20 < a href ="/DyEnigma/news/op_getPageList.do?page=1" > 第一页 </ a >
21 < a href ="/DyEnigma/news/op_getPageList.do?page=<s:property value=" %{pageBean.currentPage-1}" /> ">上一页 </ a >
22 </ s:else >
23 < s:if test ="%{pageBean.currentPage != pageBean.totalPage}" >
24 < a href ="/DyEnigma/news/op_getPageList.do?page=<s:property value=" %{pageBean.currentPage+1}" /> ">下一页 </ a >
25 < a href ="/DyEnigma/news/op_getPageList.do?page=<s:property value=" pageBean.totalPage" /> ">最后一页 </ a >
26 </ s:if >
27 < s:else > 下一页 最后一页 </ s:else >
28 </ td >
29 </ tr >
2 < td width ="13%" class ="tocenter" >
3 共
4 < s:property value ="pageBean.totalPage" />
5 页
6 </ td >
7 < td width ="17%" class ="tocenter" >
8 共
9 < s:property value ="pageBean.allRow" />
10 条记录
11 </ td >
12 < td width ="15%" class ="tocenter" >
13 当前第
14 < s:property value ="pageBean.currentPage" />
15 页
16 </ td >
17 < td colspan ="4" width ="55%" class ="tocenter" >
18 < s:if test ="%{pageBean.currentPage == 1}" > 第一页 上一页 </ s:if >
19 < s:else >
20 < a href ="/DyEnigma/news/op_getPageList.do?page=1" > 第一页 </ a >
21 < a href ="/DyEnigma/news/op_getPageList.do?page=<s:property value=" %{pageBean.currentPage-1}" /> ">上一页 </ a >
22 </ s:else >
23 < s:if test ="%{pageBean.currentPage != pageBean.totalPage}" >
24 < a href ="/DyEnigma/news/op_getPageList.do?page=<s:property value=" %{pageBean.currentPage+1}" /> ">下一页 </ a >
25 < a href ="/DyEnigma/news/op_getPageList.do?page=<s:property value=" pageBean.totalPage" /> ">最后一页 </ a >
26 </ s:if >
27 < s:else > 下一页 最后一页 </ s:else >
28 </ td >
29 </ tr >
七、PageBean文件
1
package
cn.dy.own;
2![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
3
import
java.util.List;
4![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
5
@SuppressWarnings(
"
unchecked
"
)
6
public
class
PageBean
{
7![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
8
private List list;// 要返回的某一页的记录列表
9
10
private int allRow; // 总记录数
11
private int totalPage; // 总页数
12
private int currentPage; // 当前页
13
private int pageSize;// 每页记录数
14
15
@SuppressWarnings("unused")
16
private boolean isFirstPage; // 是否为第一页
17
@SuppressWarnings("unused")
18
private boolean isLastPage;// 是否为最后一页
19
@SuppressWarnings("unused")
20
private boolean hasPreviousPage; // 是否有前一页
21
@SuppressWarnings("unused")
22
private boolean hasNextPage;// 是否有下一页
23![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
24
public List getList() {
25
return list;
26
}
27![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
28
public void setList(List list) {
29
this.list = list;
30
}
31![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
32
public int getAllRow() {
33
return allRow;
34
}
35![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
36
public void setAllRow(int allRow) {
37
this.allRow = allRow;
38
}
39![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
40
public int getTotalPage() {
41
return totalPage;
42
}
43![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
44
public void setTotalPage(int totalPage) {
45
this.totalPage = totalPage;
46
}
47![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
48
public int getCurrentPage() {
49
return currentPage;
50
}
51![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
52
public void setCurrentPage(int currentPage) {
53
this.currentPage = currentPage;
54
}
55![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
56
public int getPageSize() {
57
return pageSize;
58
}
59![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
60
public void setPageSize(int pageSize) {
61
this.pageSize = pageSize;
62
}
63![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
64
/**
65
* 初始化分页信息
66
*/
67
public void init() {
68
this.isFirstPage = isFirstPage();
69
this.isLastPage = isLastPage();
70
this.hasPreviousPage = isHasPreviousPage();
71
this.hasNextPage = isHasNextPage();
72
}
73![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
74
/**
75
* 以下判断页的信息,只需getter方法(is方法)即可
76
*
77
* @return
78
*/
79
public boolean isFirstPage() {
80
return currentPage == 1; // 如是当前页是第1页
81
}
82![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
83
public boolean isLastPage() {
84
return currentPage == totalPage; // 如果当前页是最后一页
85
}
86![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
87
public boolean isHasPreviousPage() {
88
return currentPage != 1;// 只要当前页不是第1页
89
}
90![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
91
public boolean isHasNextPage() {
92
return currentPage != totalPage; // 只要当前页不是最后1页
93
}
94![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
95
/**
96
* 计算总页数,静态方法,供外部直接通过类名调用
97
*
98
* @param pageSize每页记录数
99
* @param allRow总记录数
100
* @return 总页数
101
*/
102
public static int countTotalPage(final int pageSize, final int allRow) {
103
int totalPage = allRow % pageSize == 0 ? allRow / pageSize : allRow / pageSize + 1;
104
return totalPage;
105
}
106![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
107
/**
108
* 计算当前页开始记录
109
*
110
* @param pageSize每页记录数
111
* @param currentPage当前第几页
112
* @return 当前页开始记录号
113
*/
114
public static int countOffset(final int pageSize, final int currentPage) {
115
final int offset = pageSize * (currentPage - 1);
116
return offset;
117
}
118![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
119
/**
120
* 计算当前页,若为0或者请求的URL中没有"?page=",则用1代替
121
*
122
* @paramPage 传入的参数(可能为空,即0,则返回1)
123
* @return 当前页
124
*/
125
public static int countCurrentPage(int page) {
126
final int curPage = (page == 0 ? 1 : page);
127
return curPage;
128
}
129
}
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
2
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
3
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
4
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
5
![](https://i-blog.csdnimg.cn/blog_migrate/4f1150b881333f12a311ae9ef34da474.gif)
6
![](https://i-blog.csdnimg.cn/blog_migrate/1fa987a29c6482f53d401256f96355eb.gif)
7
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
8
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
9
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
10
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
11
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
12
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
13
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
14
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
15
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
16
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
17
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
18
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
19
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
20
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
21
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
22
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
23
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
24
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
25
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
26
![](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
27
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
28
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
29
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
30
![](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
31
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
32
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
33
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
34
![](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
35
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
36
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
37
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
38
![](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
39
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
40
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
41
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
42
![](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
43
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
44
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
45
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
46
![](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
47
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
48
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
49
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
50
![](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
51
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
52
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
53
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
54
![](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
55
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
56
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
57
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
58
![](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
59
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
60
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
61
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
62
![](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
63
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
64
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
65
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
66
![](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
67
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
68
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
69
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
70
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
71
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
72
![](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
73
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
74
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
75
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
76
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
77
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
78
![](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
79
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
80
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
81
![](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
82
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
83
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
84
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
85
![](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
86
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
87
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
88
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
89
![](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
90
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
91
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
92
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
93
![](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
94
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
95
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
96
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
97
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
98
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
99
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
100
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
101
![](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
102
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
103
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
104
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
105
![](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
106
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
107
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
108
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
109
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
110
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
111
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
112
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
113
![](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
114
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
115
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
116
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
117
![](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
118
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
119
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
120
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
121
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
122
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
123
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
124
![](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
125
![](https://i-blog.csdnimg.cn/blog_migrate/97e794c86028c5f5b5461ae5ef440a4c.gif)
126
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
127
![](https://i-blog.csdnimg.cn/blog_migrate/d18c02628675d0a2c816449d98bda930.gif)
128
![](https://i-blog.csdnimg.cn/blog_migrate/ecedf933ec37d714bd4c2545da43add2.gif)
129
![](https://i-blog.csdnimg.cn/blog_migrate/8f1ba5b45633e9678d1db480c16cae3f.gif)
OK,完工。