45fan.com - 路饭网

搜索: 您的位置主页 > 网络频道 > 阅读资讯:实现Struts分页的方法

实现Struts分页的方法

2016-09-01 16:10:28 来源:www.45fan.com 【

实现Struts分页的方法

1、分页的bean类PaginationSupport.java
2、写好后直接在action里面调用,计算当前页显示的数据
3、写一个公用的jsp页面,直接在需要分页的页面include就可以了。。
4、运行后式样
实现Struts分页的方法

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"/>页&nbsp;&nbsp;
记录总数:<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>
 

本文地址:http://www.45fan.com/a/question/70831.html
Tags: Struts bean
编辑:路饭网
关于我们 | 联系我们 | 友情链接 | 网站地图 | Sitemap | App | 返回顶部