一、分析:
1,先分析页面中要显示哪些数据。2,由Servlet(显示层)准备页面所需要的数据, 然后由JSP(显示层)显示出数据。
3,让Servlet找Service层/Dao层获取数据,一般来说,数据的获取途径:
a, 页面传递给Servlet的参数
b, 查询数据库
c, 计算出的数据
d, 从其他系统中/网络上获取到的数据
...
1,先分析页面中要显示哪些数据(动态数据):
recordList 数据列表,注意不是全部的数据列表,是某一页的数据列表。
currentPage 当前是第几页
pageCount 总页数
recordCount 总记录数
pageSize 每页显示多少条数据
上一页页码(当前页-1)
下一页页码(当前页+1)
2,让Servlet准备这些数据
======================================================= 方式一
// 拿到页面要显示的数据
recordList = ?;
currentPage = ?;
pageCount = ?;
recordCount = ?;
pageSize = ?;
// 准备数据(放到request作用域中)
request.setAttribute("recordList", recordList);
request.setAttribute("currentPage", currentPage);
request.setAttribute("pageCount", pageCount);
request.setAttribute("recordCount", recordCount);
request.setAttribute("pageSize", pageSize);
// 转发到JSP去显示数据
request..(".../list.jsp")..forward(..);
======================================================= 方式二
// 拿到页面要显示的数据
recordList = ?;
currentPage = ?;
recordCount = ?;
pageSize = ?;
PageBean pageBean = new PageBean(recordList, currentPage, recordCount, pageSize);
// 准备数据(放到request作用域中)
request.setAttribute("pageBean", pageBean);
// 转发到JSP去显示数据
request..(".../list.jsp")..forward(..);
3,然后再写:
可以先写Service/Dao,以查询出、计算出所需要的数据。
也可以先写JSP,去显示这些数据。
流程:(JSP <--- Servlet) <--- Service <-- Dao
再分析其他环节:
1,JSP
前提是Servlet已经准备好了所有数据(PageBean),在JSP中就是使用EL和JSTL等显示这些数据。
2,获取数据
pageCount 总页数 ---- 计算出来
currentPage 当前是第几页 ---- 页面传递的参数,在servlet中request.getParameter(..)
pageSize 每页显示多少条数据 ---- 页面传递的参数,在servlet中request.getParameter(..)
recordList 一页的数据列表 ---- 查询数据库,在Dao中要有相应的方法。
recordCount 总记录数 ---- 查询数据库,在Dao中要有相应的方法。
3,所以需要在Dao接口中增加方法以能够查询分页用的数据:
======================================================= 方式一
ContactDao
int getCount();
List<Contact> findAll(currentPage, pageSize); --> ".. limit ?, ?";
======================================================= 方式二
ContactDao
QueryResult find(currentPage, pageSize, ...);
QueryResult类:
int recordCount;
List recordList;
// getter, setter