1、分页的bean类PaginationSupport.java
2、写好后直接在action里面调用,计算当前页显示的数据
3、写一个公用的jsp页面,直接在需要分页的页面include就可以了。。
4、运行后式样
package com.jrosion.common.util; import java.util.ArrayList; import java.util.Vector; /** * Struts分页 * * @author Jrosion * @version 1.0 * @serialData 2006-11-30 */ public class PaginationSupport { // 每页显示的记录数 public final static int PAGE_SIZE = 12; private int currentPage = 1; // 当前页 private int totalPags = 0; // 总页数 private int totalRows = 0; // 总数据条数 private int pageStartRow; // 每页起始行 private int pageEndRow; // 每页结束行 private boolean isntHaveNextPage = false; // 是否有下一页 private boolean isntHavePreviousPage = false; // 是否有上一页 private Vector navigationPages = new Vector(); private ArrayList currentPageDates = new ArrayList(); // 当前页数据 private String url = ""; // 链接地址 private int nextPage; // 下一页 private int previousPage; // 上一页 private String condition; /** * 构造分页模型 * * @param date分页数据 */ public PaginationSupport(ArrayList paginationDate, int currentPage, String url) { if (paginationDate != null) { // 总页数 this.totalRows = paginationDate.size(); // 计算总页数 this.totalPags = this.getTotalPages(totalRows); // 当前页 if (currentPage <= 0) { this.currentPage = 1; } else if (currentPage > totalPags) { this.currentPage = totalPags; } else { this.currentPage = currentPage; } // 上一页 this.previousPage = currentPage - 1; // 下一页 this.nextPage = currentPage + 1; // 判断是否还有下页 this.isntHaveNextPage = this.getIsntHaveNextPage(currentPage, totalPags); // 判断是否有上页 if (currentPage > 1) { this.isntHavePreviousPage = true; } else { this.isntHavePreviousPage = false; } // 设置数据起始行 int[] row = this.getStartAndEndRow(paginationDate, currentPage, totalPags, totalRows); this.pageStartRow = row[0]; this.pageEndRow = row[1]; // 获取当前页需要显示的数据 this.currentPageDates = this.getCurrentPageDate(paginationDate, pageStartRow, pageEndRow); this.url = url; // 设置导航页 this.navigationPages = this.getNavigationPages(currentPage, totalPags); } } /** * 根据记录条数进行构造 * * @param totalRecord * @param currentPage * @param url */ public PaginationSupport(int totalRecord, int currentPage, String url) { if (totalRecord > 0) { // 总页数 this.totalRows = totalRecord; // 计算总页数 this.totalPags = this.getTotalPages(totalRows); // 当前页 if (currentPage <= 0) { this.currentPage = 1; } else if (currentPage > totalPags) { this.currentPage = totalPags; } else { this.currentPage = currentPage; } // 上一页 this.previousPage = currentPage - 1; // 下一页 this.nextPage = currentPage + 1; // 判断是否还有下页 this.isntHaveNextPage = this.getIsntHaveNextPage(currentPage, totalPags); // 判断是否有上页 if (currentPage > 1) { this.isntHavePreviousPage = true; } else { this.isntHavePreviousPage = false; } // 设置数据起始行 int[] row = this.getStartAndEndRow(currentPage); this.pageStartRow = row[0]; this.pageEndRow = row[1]; this.url = url; // 设置导航页 this.navigationPages = this.getNavigationPages(currentPage, totalPags); } } /** * 计算总页数 * * @param totalRows * @return */ public int getTotalPages(int totalRows) { int result = 1; if (totalRows > PAGE_SIZE) { if ((totalRows % PAGE_SIZE) == 0) { result = totalRows / PAGE_SIZE; } else { result = totalRows / PAGE_SIZE + 1; } } return result; } /** * 判断是否有下一页 * * @param currentPages * @param totalPages * @return */ public boolean getIsntHaveNextPage(int currentPages, int totalPages) { boolean result = false; if (currentPage >= totalPags) { result = false; } else { result = true; } return result; } /** * 返回当前页显示数据的起始行 * * @param currentPage当前页 * @param totalPags总页数 * @param totalRows总行数 * @return */ public int[] getStartAndEndRow(ArrayList paginationDate, int currentPage, int totalPags, int totalRows) { int[] result = new int[2]; int startRow = PAGE_SIZE * (currentPage - 1); int endRow = 0; if (currentPage == totalPags) { endRow = totalRows - 1; } else { endRow = startRow + PAGE_SIZE - 1; } result[0] = startRow; result[1] = endRow; return result; } /** * 返回当前页显示数据的起始行 * * @param currentPage * @return */ public int[] getStartAndEndRow(int currentPage) { int[] result = new int[2]; int startRow = PAGE_SIZE * (currentPage - 1); int endRow = PAGE_SIZE; result[0] = startRow; result[1] = endRow; return result; } /** * 初始化导航页面 * * @return */ public Vector initNavigationPages(int totalPages) { Vector result = new Vector(); int loop = 11; if (totalPages < 10) { loop = totalPages + 1; } for (int i = 1; i < loop; i++) { String element = String.valueOf(i).toString(); result.addElement(element); } return result; } /** * 得到导航页面 * * @param currentPages * @param totalPages * @return */ public Vector getNavigationPages(int currentPages, int totalPages) { Vector result = new Vector(); if (currentPages > totalPages) { currentPages = totalPages; } if (currentPages <= 0) { currentPages = 1; } if (totalPages > 10) { int endPages = currentPages + 10; int startPages = currentPages; if (endPages > totalPages) { int morePages = endPages - totalPages; startPages = currentPages - morePages + 1; endPages = totalPages + 1; } for (int i = startPages; i < endPages; i++) { String element = String.valueOf(i).toString(); result.addElement(element); } } else { result = this.initNavigationPages(totalPages); } return result; } /** * 得到当前页面数据 * * @param startRow开始行索引 * @param endRow结束行索引 * @return */ public ArrayList getCurrentPageDate(ArrayList pageDates, int startRow, int endRow) { if (pageDates == null || pageDates.size() == 0) { return null; } ArrayList result = new ArrayList(); try { for (int i = startRow; i < endRow + 1; i++) { result.add(pageDates.get(i)); } } catch (IndexOutOfBoundsException e) { System.out.println(e.getMessage()); } return result; } public int getCurrentPage() { return currentPage; } public void setCurrentPage(int currentPage) { this.currentPage = currentPage; } public boolean isIsntHavePreviousPage() { return isntHavePreviousPage; } public void setIsntHavePreviousPage(boolean isntHavePreviousPage) { this.isntHavePreviousPage = isntHavePreviousPage; } public int getPageEndRow() { return pageEndRow; } public void setPageEndRow(int pageEndRow) { this.pageEndRow = pageEndRow; } public int getPageStartRow() { return pageStartRow; } public void setPageStartRow(int pageStartRow) { this.pageStartRow = pageStartRow; } public int getTotalPags() { return totalPags; } public void setTotalPags(int totalPags) { this.totalPags = totalPags; } public int getTotalRows() { return totalRows; } public void setTotalRows(int totalRows) { this.totalRows = totalRows; } public ArrayList getCurrentPageDates() { return currentPageDates; } public void setCurrentPageDates(ArrayList currentPageDates) { this.currentPageDates = currentPageDates; } public boolean isIsntHaveNextPage() { return isntHaveNextPage; } public void setIsntHaveNextPage(boolean isntHaveNextPage) { this.isntHaveNextPage = isntHaveNextPage; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public int getNextPage() { return nextPage; } public void setNextPage(int nextPage) { this.nextPage = nextPage; } public int getPreviousPage() { return previousPage; } public void setPreviousPage(int previousPage) { this.previousPage = previousPage; } public Vector getNavigationPages() { return navigationPages; } public void setNavigationPages(Vector navigationPages) { this.navigationPages = navigationPages; } public String getCondition() { return condition; } public void setCondition(String condition) { this.condition = condition; } } }
/******************************************/
service部分代码
/*******************************************/
public int count(String condition) { if (condition == "" || condition == null || condition.equals("null")) { condition = " 1=1 "; } return teacherDAO.count(condition); } public List query(String condition, int startRow, int displayRows) { if (condition == "" || condition == null || condition.equals("null")) { condition = " 1=1 "; } return teacherDAO.query(condition, startRow, displayRows); } public HashMap pagination(String condition, String currentPage) { HashMap result = new HashMap(); if (currentPage == "" || currentPage == null || currentPage.equals("null")) { currentPage = "1"; } int page = Integer.valueOf(currentPage).intValue(); int recordCount = this.count(condition); PaginationSupport pagination = new PaginationSupport(recordCount, page, "/displayTeacher.do"); List pageDate = this.query(condition, pagination.getPageStartRow(), pagination.getPageEndRow()); result.put("pageData", pageDate); result.put("navigation", pagination); return result; } 。。。。。
-----------------------------------action调用---------------------
public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { List result = teacherService.query(); String page = request.getParameter("page"); if (page == null || page.equals("")) { page = "1"; } int p = Integer.valueOf(page).intValue(); PaginationSupport pagination = new PaginationSupport( (ArrayList) result, p, "/displayTeacher.do"); result = pagination.getCurrentPageDates(); request.setAttribute("QueryObject", result); request.setAttribute("page", pagination); return mapping.findForward("teacherIndexGo"); }
---公用的jsp页面
<%@ page pageEncoding="gb2312" contentType="text/html;charset=gb2312" %> <bean:define id="pages" name="page"/> <table width="100%" align="center" border="0" cellpadding="0" cellspacing="0"> <TR class="tr"> <TD width="15%" align="right" height="20" valign="baseline"> 共:<bean:write name="pages" property="totalPags"/>页/ 第<bean:write name="pages" property="currentPage"/>页 记录总数:<bean:write name="pages" property="totalRows"/>条 <a href="<%=request.getContextPath()%><bean:write name=‘pages‘ property=‘url‘/>?page=1"> <img border="0" src="<%=request.getContextPath()%>/skin/<bean:write _fcksavedurl=""<%=request.getContextPath()%>/skin/<bean:write" name="user" property="skin"/>/first.gif"></a> <logic:equal name="pages" property="isntHavePreviousPage" value="true"> <a href="<%=request.getContextPath()%><bean:write name=‘pages‘ property=‘url‘/>?page=<bean:write name=‘pages‘ property=‘previousPage‘/>"> <img border="0" src="<%=request.getContextPath()%>/skin/<bean:write name="user" property="skin"/>/previous.gif"></a> </logic:equal> <logic:iterate id="navigation" name="pages" property="navigationPages"> <a href="<%=request.getContextPath()%><bean:write name=‘pages‘ property=‘url‘/>?page=<bean:write name=‘navigation‘/>"> <bean:write name="navigation"/></a> </logic:iterate> <logic:equal name="pages" property="isntHaveNextPage" value="true"> <a href="<%=request.getContextPath()%><bean:write name=‘pages‘ property=‘url‘/>?page=<bean:write name=‘pages‘ property=‘nextPage‘/>"> <img border="0" src="<%=request.getContextPath()%>/skin/<bean:write name="user" property="skin"/>/next.gif"></a> </logic:equal> <a href="<%=request.getContextPath()%><bean:write name=‘pages‘ property=‘url‘/>?page=<bean:write name=‘pages‘ property=‘totalPags‘/>"> <img border="0" src="<%=request.getContextPath()%>/skin/<bean:write name="user" property="skin"/>/last.gif"></a> <input type="text" size="4" name="iputPage"><input type="button" name="go" value="Go"> </TD> </TR> </table>
时间: 2024-10-06 21:07:43