有时候需要根据条件查询得出的数据较多,需要分页显示到页面上。这时点击下一页就不方便每次带查询条件在数据库中分页。可以在list中进行分页。
page的model类:
public class Page {
private Integer currentPage;//当前页
private int pageSize;//每页显示记录条数
private int totalPage;//总页数
private List<?> dataList;//每页显示的数据
private int star;//开始数据
public Integer getCurrentPage() {
return currentPage;
}
public void setCurrentPage(Integer currentPage) {
this.currentPage = currentPage;
}
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getTotalPage() {
return totalPage;
}
public void setTotalPage(int totalPage) {
this.totalPage = totalPage;
}
public List<?> getDataList() {
return dataList;
}
public void setDataList(List<?> dataList) {
this.dataList = dataList;
}
public int getStar() {
return star;
}
public void setStar(int star) {
this.star = star;
}
}
控制层:
@RequestMapping("fenye.do")
public String fen(Page page,HttpServletRequest request){
try {
//查询出的list数据
List<Data> showdata=loginService.selectyichall();
//刚开始的页面为第一页
if (page.getCurrentPage() == null){
page.setCurrentPage(1);
} else {
page.setCurrentPage(page.getCurrentPage());
}
//设置每页数据为十条
page.setPageSize(10);
//每页的开始数
page.setStar((page.getCurrentPage() - 1) * page.getPageSize());
//list的大小
int count = showdata.size();
//设置总页数
page.setTotalPage(count % 10 == 0 ? count / 10 : count / 10 + 1);
//对list进行截取
page.setDataList(showdata.subList(page.getStar(),count-page.getStar()>page.getPageSize()?page.getStar()+page.getPageSize():count));
//设置作用域
request.setAttribute("paging", page);
return "add/show.jsp";
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "mistake.jsp";
}
}
jsp页面:
<script type="text/javascript" language="javascript">
function goPage(page){
location.href="fenye.do?currentPage="+page;
}
</script>
<div>
<table width="100%" border="0" align="center" cellspacing="1" >
<c:forEach items="${paging.dataList }" var="upl">
<tr>
<td align="center">${upl.name1 }</td>
<td align="center">${upl.name2 }</td>
<td align="center">${upl.name3 }</td>
</tr>
</c:forEach>
</table>
</div>
<div style="text-align:center; margin-top:40px" id="venderfen">
当前第${paging.currentPage }页/共${paging.totalPage }页
<c:choose>
<c:when test="${paging.currentPage==1&&paging.totalPage==0}">
</c:when>
<c:when test="${paging.currentPage==1&&paging.totalPage==1}">
</c:when>
<c:when test="${paging.currentPage==2&&paging.totalPage==2}">
<input type="button" value="首页" onclick="goPage(1)" />
<input type="button" value="上一页"
onclick="goPage(${paging.currentPage-1})" />
</c:when>
<c:when test="${paging.currentPage==1 }">
<input type="button" value="上一页" >
<input type="button" value="下一页"
onclick="goPage(${paging.currentPage+1})" />
<input type="button" value="末页"
onclick="goPage(${paging.totalPage})" />
</c:when>
<c:when test="${paging.currentPage==paging.totalPage }">
<input type="button" value="首页" onclick="goPage(1)" />
<input type="button" value="上一页"
onclick="goPage(${paging.currentPage-1})" />
</c:when>
<c:otherwise>
<input type="button" value="首页" onclick="goPage(1)" />
<input type="button" value="上一页"
onclick="goPage(${paging.currentPage-1})" />
<input type="button" value="下一页"
onclick="goPage(${paging.currentPage+1})" />
<input type="button" value="末页"
onclick="goPage(${paging.totalPage})" />
</c:otherwise>
</c:choose>
</div>
结束。谢谢!