先看看效果吧!
下面是关键代码:
- package com.hqh.page.util;
- import java.util.List;
- public class PageForm {
- private int currentPage = 1;// 当前页
- private int prePage = 0;// 上一页
- private int nextPage = 0;// 下一页
- private int pageSize = 10;// 每页显示的行数
- private int totalPage = 0;// 总页数
- private int totalSize = 0;// 总纪录数
- private List list;
- public PageForm() {
- }
- /**
- *
- * @param currentPage
- * 当前页
- * @param pageSize
- * 每页显示的行数
- */
- public PageForm(int currentPage, int pageSize) {
- this.currentPage = currentPage;
- this.pageSize = pageSize;
- }
- public int getCurrentPage() {
- return currentPage;
- }
- public void setCurrentPage(int currentPage) {
- if (currentPage < 1) {
- this.currentPage = 1;
- } else {
- this.currentPage = currentPage;
- }
- }
- // 上一页
- public int getPrePage() {
- if (currentPage > 1) {
- prePage = currentPage - 1;
- } else {
- prePage = 0;
- }
- return prePage;
- }
- // 下一页
- public int getNextPage() {
- if (currentPage < totalPage) {
- nextPage = currentPage + 1;
- } else {
- nextPage = totalPage;
- }
- return nextPage;
- }
- public int getPageSize() {
- if (this.pageSize <= 0) {
- this.pageSize = 10;
- }
- return pageSize;
- }
- public void setPageSize(int pageSize) {
- this.pageSize = pageSize;
- }
- public int getTotalPage() {
- if (getTotalSize() % pageSize == 0) {// 100%10->totalPage=10
- this.totalPage = getTotalSize() / pageSize;
- } else {
- this.totalPage = getTotalSize() / pageSize + 1;
- }
- return this.totalPage;
- }
- public int getTotalSize() {
- return this.list.size();
- }
- public List getList() {
- return list;
- }
- public void setList(List list) {
- this.list = list;
- }
- }
可重复利用的page.jsp
- <%@ page language="java" pageEncoding="GB18030"%>
- <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
- <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
- <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>
- <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
- <bean:define id="pageForm" name="pageForm" type="com.hqh.page.util.PageForm"></bean:define>
- <bean:define id="actionPath" name="actionPath"></bean:define>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html:html lang="true">
- <head>
- <html:base />
- <title></title>
- </head>
- <body>
- <table>
- <tr>
- <td>共<bean:write name="pageForm" property="totalSize"/>条信息</td>
- <td>
- <logic:equal name="pageForm" value="1" property="currentPage">首页</logic:equal>
- <logic:notEqual name="pageForm" value="1" property="currentPage">
- <a href="<%=actionPath %>?currentPage=1&pageSize=<bean:write name="pageForm" property="pageSize"/>">首页</a>
- </logic:notEqual>
- </td>
- <td>
- <logic:equal name="pageForm" property="currentPage" value="1">上一页</logic:equal>
- <logic:notEqual name="pageForm" property="currentPage" value="1">
- <a href="<%=actionPath %>?currentPage=<bean:write name="pageForm" property="prePage"/>&pageSize=<bean:write name="pageForm" property="pageSize"/>">上一页</a>
- </logic:notEqual>
- </td>
- <td>
- <logic:equal name="pageForm" property="currentPage" value="${pageForm.totalPage}">下一页</logic:equal>
- <logic:notEqual name="pageForm" property="currentPage" value="${pageForm.totalPage}">
- <a href="<%=actionPath %>?currentPage=<bean:write name="pageForm" property="nextPage"/>&pageSize=<bean:write name="pageForm" property="pageSize"/>">下一页</a>
- </logic:notEqual>
- </td>
- <td>
- <logic:equal name="pageForm" property="currentPage" value="${pageForm.totalPage}" >尾页</logic:equal>
- <logic:notEqual name="pageForm" property="currentPage" value="${pageForm.totalPage}" >
- <a href="<%=actionPath %>?currentPage=<bean:write name="pageForm" property="totalPage"/>&pageSize=<bean:write name="pageForm" property="pageSize"/>">尾页</a>
- </logic:notEqual>
- </td>
- <td>
- 跳转到第<select name='currentPage'
- onChange='javascript:location=this.options[this.selectedIndex].value;'>
- <%
- for (int i = 1; i <= pageForm.getTotalPage(); i++) {
- if (i == (pageForm.getCurrentPage())) {%>
- <option value="<%=actionPath %>?currentPage=<%=i%>&pageSize=<%=pageForm.getPageSize()%>+" selected><%=i %></option>
- <% } else {%>
- <option value="<%=actionPath %>?currentPage=<%=i%>&pageSize=<%=pageForm.getPageSize()%>"><%=i %></option>
- <%}}%>
- </select>页
- 每页行数 <select name='pageSize'
- onChange='javascript:location=this.options[this.selectedIndex].value;'>
- <%
- for (int i = 5; i <= 30; i=i+5) {
- if (i == pageForm.getPageSize()) {%>
- <option value="<%=actionPath %>?currentPage=1&pageSize=<%=i%>" selected><%=i%></option>
- <%} else {%>
- <option value="<%=actionPath %>?currentPage=1&pageSize=<%=i%>"><%=i%></option>
- <%}}%>
- </select>
- </td>
- <td>当前:<bean:write name="pageForm" property="currentPage"/>/<bean:write name="pageForm" property="totalPage"/>页</td>
- </tr>
- </table>
- </body>
- </html:html>
action:
- /*
- * Generated by MyEclipse Struts
- * Template path: templates/java/JavaClass.vtl
- */
- package com.hqh.page.struts.action;
- import java.util.List;
- 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;
- import com.hqh.page.bean.People;
- import com.hqh.page.dao.PeopleDAO;
- import com.hqh.page.util.PageForm;
- /**
- * MyEclipse Struts Creation date: 12-24-2007
- *
- * XDoclet definition:
- *
- * @struts.action validate="true"
- */
- public class PeopleAction2 extends Action {
- /*
- * Generated Methods
- */
- private PeopleDAO peopleDAO = null;
- public ActionForward execute(ActionMapping mapping, ActionForm form,
- HttpServletRequest request, HttpServletResponse response) {
- peopleDAO = new PeopleDAO();
- List<People> list = peopleDAO.getAllPeople();
- PageForm pageForm = new PageForm(1, 10);
- pageForm.setList(list);
- String currentPage = request.getParameter("currentPage");//
- if (currentPage != null) {
- try {
- pageForm.setCurrentPage(Integer.parseInt(currentPage));
- } catch (NumberFormatException e) {
- //如果从地址拦输入不合法的参数,就默认跳到第一页
- pageForm.setCurrentPage(1);
- }
- }
- String pageSize = request.getParameter("pageSize");// 一页显示几行
- if (pageSize != null) {
- try {
- pageForm.setPageSize(Integer.parseInt(pageSize));
- } catch (NumberFormatException e) {
- //如果从地址拦输入不合法的参数,默认每页显示10行
- pageForm.setPageSize(10);
- }
- }
- request.setAttribute("pageForm", pageForm);//分页中要用到
- request.setAttribute("actionPath", "second.do");// 设置该action的请求路径,也就是该action在struts-config.xml中对应的path
- return mapping.findForward("peopleList");//此处跳到pagination2.jsp
- }
- }
测试页面(pagination2.jsp):
- <%@ page language="java" pageEncoding="GB18030"%>
- <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean"%>
- <%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
- <%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic"%>
- <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
- <html:html lang="true">
- <head>
- <html:base />
- <title>分页</title>
- </head>
- <bean:define id="pageForm" name="pageForm"
- type="com.hqh.page.util.PageForm"></bean:define>
- <bean:define id="actionPath" name="actionPath"></bean:define>
- <body>
- 下面是从数据库中取到的数据:
- <table width="700" border="1" height="73">
- <tbody>
- <tr>
- <td>
- 编号
- </td>
- <td>
- 姓名
- </td>
- <td>
- 性别
- </td>
- <td>
- 年龄
- </td>
- <td>
- 职位
- </td>
- </tr>
- <logic:iterate id="people" name="pageForm" property="list"
- type="com.hqh.page.bean.People"
- offset="${(pageForm.currentPage-1)*(pageForm.pageSize)}"
- length="${pageForm.pageSize}">
- <tr>
- <td>
- <bean:write name="people" property="id" />
- </td>
- <td>
- <bean:write name="people" property="name" />
- </td>
- <td>
- <bean:write name="people" property="sex" />
- </td>
- <td>
- <bean:write name="people" property="age" />
- </td>
- <td>
- <bean:write name="people" property="profession" />
- </td>
- </tr>
- </logic:iterate>
- </tbody>
- </table>
- <jsp:include page="page.jsp"></jsp:include>
- </body>
- </html:html>
转载于:https://blog.51cto.com/huqianhao/954474