`

struts中的分页

阅读更多
转载:http://hi.baidu.com/javajavajava/blog
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>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics