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>

  

Struts分页的更多相关文章

  1. Hibernate和Struts分页查询

    分页查询数据库方法 /** * 分页查询方法 * @param sql,pageNO,maxResult * @return List */ public List<Object> que ...

  2. Struts分页的一个实现

    在Web应用程序里,分页总让我们开发人员感到很头疼,倒不是因为技术上有多么困难,只是本来和业务没有太多关系的这么一个问题,你却得花不少功夫来处理.要是稍不留神,时不时出点问题就更郁闷了.我现在做的一个 ...

  3. struts分页实现

  4. JQueryPagination分页插件,ajax从struts请求数据

    2017-07-16 学完了struts,做了个关于分页的小例子,用到了JQuery分页插件Pagination,先贴下插件下载地址 http://www.jq22.com/jquery-info13 ...

  5. hibernate和struts实现分页

    仓促把功能进行实现一下  类与类之间也没有进行MVC式分开  重要的是逻辑 记录一下 希望其中的些许代码逻辑对你有用 TUserDaoImpl---dao层的实现 package com.pers.h ...

  6. SSH(Struts 2.3.31 + Spring 4.1.6 + Hibernate 5.0.12 + Ajax)框架整合实现简单的增删改查(包含分页,Ajax 无刷新验证该用户是否存在)

    软件152 余建强 该文将以员工.部门两表带领大家进入SSH的整合教程: 源码下载:http://download.csdn.net/detail/qq_35318576/9877235 SSH 整合 ...

  7. ajax+json模态框中分页(spring+struts+mybatis+easyui分页插件)

    0.业务需求: 点击每个数字的时候可以显示每个对应的详细记录.也就是得点击11的时候拿着开采部与C级去查询.

  8. Struts+Hibernate+jsp页面 实现分页

    dao层数据库代码: package com.hanqi.dao; import java.util.ArrayList; import java.util.List; import org.hibe ...

  9. Struts+jdbc+分页 实例

    根据项目里分页实例,带有注解. package org.tarena.netctoss.dao.impl; import java.sql.Connection; import java.sql.Pr ...

随机推荐

  1. 玩转iOS开发 - 数据缓存

    Why Cache 有时候.对同一个URL请求多次,返回的数据可能都是一样的,比方server上的某张图片.不管下载多少次,返回的数据都是一样的. 上面的情况会造成下面问题 (1)用户流量的浪费 (2 ...

  2. Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、oracle...)间进行数据的传递

    http://niuzhenxin.iteye.com/blog/1706203   Sqoop是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql.postgresql.. ...

  3. OD: Exploit Me - Overwrite Nearby Varible

    实验代码: #include<stdio.h> #include<string.h> #define PASSWORD "1234567" int veri ...

  4. ionic开发ios app

    注意必须是mac系统 1. 首先要安装node环境,Ionic的安装和后续的许多前端工具的安装都依赖于node的包管理器npm. nodeJs环境的安装很简单,去官网下载最新版的NodeJs直接安装即 ...

  5. 读书笔记_Effective_C++_条款二十三:宁以non-member、non-friend替换member函数

    有下面一种情况 class A { private: int a; int b; public: A(int x, int y) :a(x), b(y){} void a_display(){ cou ...

  6. CF 277E Binary Tree on Plane (拆点 + 费用流) (KM也可做)

    题目大意: 平面上有n个点,两两不同.现在给出二叉树的定义,要求树边一定是从上指向下,即从y坐标大的点指向小的点,并且每个结点至多有两个儿子.现在让你求给出的这些点是否能构成一棵二叉树,如果能,使二叉 ...

  7. Selinux 禁用

    Selinux是对于强制访问控制的实现,在这种访问控制体系的限制下,进程只能访问那些在他的任务中所需要文件. 对于新手来说会影响我们的操作.一般情况下是不需要的,所以禁用他,如果需要的情况下,我们可以 ...

  8. WEB开发中常用的正则表达式

    在计算机科学中,正则表达式用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串.在WEB开发中,正则表达式通常用来检测.查找替换某些符合规则的字符串,如检测用户输入E-mai格式是否正确,采集符 ...

  9. 一个简单的redis调用类

    能只能判断函数的调用规则,容错规则, 例如set函数 set($key, $value, $time = false) 根据time的真假来判断是否使用set,或者是setex函数 get函数 get ...

  10. 关于一个小bug的修正

    python初学者,非常喜欢虫师的文章. 练习时发现一个小bug,http://www.cnblogs.com/fnng/p/3782515.html 验证邮箱格式一题中,第三个x不允许有数字,但是测 ...