在应用程序开发的时候分页有两种:真分页和假分页,假分页要把所有数据先提取出来放到一个list集合里或者静态变量中。真分页则是需要用到几行数据再从数据库中提取出来放把需要显示的数据放到list集合里。但无论真分页假分页pager-taglib都可以很好的为我们进行处理。
1.下载pager-taglib
下载地址http://jsptags.com/index.jsp,找http://jsptags.com/tags/navigation/pager/index.jsp,将demo进行下载,主要的jar文件就在这个demo里面
2.编写如下JSP文件
</c:if>
</table>
<!-- maxIndexPages="10" 最大显示10页-->
<pg:pager items="${pm.total}" export="currentPageNumber=pageNumber" url="list.do">
<pg:first>
<!-- 比如${pageUrl}等变量都是固定的,是在pager-tags中已经定义好了的 -->
<a href="${pageUrl}" mce_href="${pageUrl}">首页</a>
</pg:first>
<pg:prev>
<a href="${pageUrl}" mce_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}" mce_href="${pageUrl}">${pageNumber }</a>
</c:otherwise>
</c:choose>
</pg:pages>
<pg:next>
<a href="${pageUrl}" mce_href="${pageUrl}">后页</a>
</pg:next>
<pg:last>
<a href="${pageUrl}" mce_href="${pageUrl}">尾页</a>
</pg:last>
</pg:pager>
</body>
</html>
该JSP请求的ACTION为
import java.util.ArrayList;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
public class ListAction extends Action {
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
int pager=Integer.parseInt(request.getParameter("pager.offset"));
ArrayList<Dog> doglist = new ArrayList<Dog>();
for(int i=0;i<1000;i++)
{
Dog d = new Dog();
d.setId(i);
d.setName("dog"+i);
doglist.add(d);
}
PageModel pm = new PageModel();
pm.setTotal(1000);
pm.setDatas(doglist.subList(pager, pager+20));
request.setAttribute("pm", pm);
return mapping.findForward("list");
}
}
PagerModel类为
import java.util.List;
public class PageModel {
/**
* 总记录数
*/
private int total;
/**
* 当前页结果集
*/
private List<?> datas;
public List<?> getDatas() {
return datas;
}
public void setDatas(List<?> datas) {
this.datas = datas;
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
}
编写完这些后,我们就可以看看我们的分页效果了