对于大多数程序员来说分页是个很头疼的问题,因为要涉及一些问题。为了简化程序员工作量使用框架来帮我们自动分页。
第一步:下载:pager-taglib包:
pager-taglib
第二部:在jsp中引用pager标签<%@taglib prefix="pg" uri="/WEB-INF/lib/pager-taglib.jar" %>
第三部:jsp页面遍写
<body>
//以下是使用c标签将分页好的数据迭代出来
<c:forEach items="${list}" var="student">
<p>${student.sname}</p>
</c:forEach>
//下面是pager框架写法
//pager是根标签所有的分页标签都在它里面 其中url是你点击页码需要请求的action相当于form表单action ///items是获取数据库中记录总数 pager正是根据这个值来进行计算页码的 export是变量意义
//maxPageItems每页最多显示几条maxIndexPages最多显示几个页码默认二者都是10
<pg:pager url="Selstudent" items="${zongsu}" export="currentPageNumber=pageNumber" maxPageItems="2" maxIndexPages="2">
//param用于给后台传递数据参数,形式使用url参数向后台发送
<pg:param name="parentId" value="${parentId}"/>
//fist是首页标签${pageUrl}是固定写法它的值形如Selstudent?pager.offset=0
表示发送一个pager.offset=0的参数给后台。用于数据库从指针为0开始查询
<pg:first>
c:if用于判断当前页是否是第一页如果是则首页无法点击
<a <c:if test="${currentPageNumber!=pageNumber}"> href="${pageUrl}" </c:if>>首页</a>
</pg:first>
//以下与首页类似
<pg:prev>
<a href="${pageUrl}">前页</a>
</pg:prev>
<pg:pages>
<c:choose>
<c:when test="${currentPageNumber eq pageNumber}">
<font color="red">${pageNumber }</font>
</c:when>
<c:otherwise>
<a href="${pageUrl}">${pageNumber }</a>
</c:otherwise>
</c:choose>
</pg:pages>
<pg:next>
<a href="${pageUrl}" >后页</a>
</pg:next>
<pg:last>
<a <c:if test="${currentPageNumber!=pageNumber}"> href="${pageUrl}" </c:if>>尾页</a>
</pg:last>
</pg:pager>
</body>
在后台我使用springMVC框架进行业务分发
@RequestMapping("/Selstudent")
public ModelAndView select(HttpServletRequest request){
ModelAndView view=new ModelAndView();//获取模型视图对象
List<Student> list=new ArrayList<Student>();//获取泛型为student的list对象
String offer=request.getParameter("pager.offset");//获取jsp传过来的pager.offset值,由于无法定义带有点的变量所欲无法在方法参数中直接获取pager。offset值。使用原始获取方法。
if(offer==null){
startpage=0;//用于初始化分页
}
else{
startpage=Integer.parseInt(offer);将分页索引赋值给start
page用于数据库查询
}
list=studentservice.select(startpage,3);//每页显示3条记录
view.addObject("list",list);
view.addObject("zongsu",studentservice.count());//将记录总数发给jsp
view.setViewName("select");//返回视图类似struts中方法的return。
return view;
}
小结:
其实让代码重用完全可以封装一个类pagemodel将记录总数,起始记录,每页记录数封装起来发送给jsp