继上篇,这篇进行分页功能
一:先把jsp页面写了
<tr>
<td colspan="6">共多少页 <a>首页</a> <a>上一页</a> <a>下一页</a> <a>末页</a>
转到:<input type="text" name="pageNo" size="2"> <input
type="submit" value="Go">
</td>
</tr>
我们要创建一个pager对象,我们需要的属性有总页数,总记录数,第几页,每页显示多少条数据
二:创建pager对象
public class pager {
//每页多少条记录
private int pageSize;
//当前为第几页
private int pageNo;
//一共多少页数
private int pageTotal;
//一共多少条数据
private int rowsTotal;
//get.set略去
}
三:分析
先补齐jsp,
<tr>
<td colspan="6">共${pager.pageTotal }页
<a href="turnPage?pageNo=1&pageTotal=${pager.pageTotal }">首页</a>
<a href="turnPage?pageNo=${pager.pageNo-1 }&pageTotal=${pager.pageTotal }">上一页</a>
<a href="turnPage?pageNo=${pager.pageNo+1 }&pageTotal=${pager.pageTotal }">下一页</a>
<a href="turnPage?pageNo=${pager.pageTotal }&pageTotal=${pager.pageTotal }">末页</a>
转到:<input type="text" name="pageNo" size="2"> <input
type="hidden" name="pageTotal" value="${pager.pageTotal }">
<input type="submit" value="Go">
</td>
</tr>
Controller
@RequestMapping(value = "turnPage")
public String turnPage(pager pager, Model model) {
pager = pagerService.pagerDeal(pager);
model.addAttribute("pager", pager);
model.addAttribute("users", UserServiceImpl.findByPager(pager));
return "jsp/index";
}
@RequestMapping(value = "main")
public String main(Model model) {
pager pager = pagerService.getNewInstance();
model.addAttribute("pager", pager);
model.addAttribute("users", UserServiceImpl.findByPager(pager));
return "jsp/index";
}
pagerUtil
public class pagerService {
@Autowired
private UserService UserServiceImpl;
public pager pagerDeal(pager pager) {
if (pager.getPageNo() < 1) {
pager.setPageNo(1);
} else if (pager.getPageNo() > pager.getPageTotal()) {
pager.setPageNo(pager.getPageTotal());
}
pager.setPageSize(5);
pager.setRowsTotal(UserServiceImpl.getCount());
pager.setPageTotal((int) Math.ceil(((double) pager.getRowsTotal() / (double) pager.getPageSize())));
return pager;
}
public pager getNewInstance() {
pager pager = new pager(5, 1, 0, 0);
pager.setRowsTotal(UserServiceImpl.getCount());
pager.setPageTotal((int) Math.ceil(((double) pager.getRowsTotal() / (double) pager.getPageSize())));
return pager;
}
}
基本的分页已经写好了
index.jsp-->findById-->update.jsp-->main-->turnPage-->index.jsp
传过来的两个pager参数都为0,就会去获取第一页的数据,不是我们所想,我们要修改获取当前页面
SO,index.jsp的修改超链接来附带pager参数
在findById的Controller结果pager参数并加入request域中
在update.jsp加上两个隐藏域传值
将pager参数一直传到turnPageController
Controller之间传递参数,我用了一个傻办法,通过视图传