`

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>

分享到:
评论

相关推荐

    struts2增删改查,struts2分页查询

    在Struts2中,增删改查(CRUD)操作和分页查询是其常用且重要的功能之一。 ### Struts2增删改查 在Struts2中实现增删改查主要通过JSP页面与Action类的交互完成。下面我们将根据提供的部分代码示例进行详细解析: ...

    Struts2自定义分页标签

    本资源详细介绍了如何在Struts2中自定义分页标签,使得开发过程更加便捷。 在Struts2中,分页通常涉及到以下几个关键步骤: 1. **创建Action类**:首先,你需要创建一个Action类,该类将处理用户的请求,包括获取...

    使用struts实现分页

    7. **国际化与本地化**:为了提供多语言支持,分页中的文字(如“上一页”、“下一页”等)可以放在资源文件中,通过Struts的国际化特性来实现。 8. **性能优化**:在处理大量数据时,要考虑到性能问题。例如,使用...

    Struts2分页源码技术的应用

    Struts2分页源码技术是Web开发中一个重要的实践,尤其是在处理大数据量时,能够有效地提高用户体验,避免一次性加载过多数据导致页面响应慢。在本文中,我们将深入探讨Struts2分页技术的实现原理、应用方法以及与...

    struts2分页效果第二种

    在Struts2中,实现分页通常涉及以下几个关键步骤: 1. **模型(Model)**:首先,我们需要一个实体类来存储待分页的数据,例如`User`。然后,创建一个`PageBean`类,它包含当前页数、总页数、每页记录数以及数据列表...

    Struts2实现分页查询

    用Struts2+mysql实现的简单信息录入,分页查询

    Struts2 分页实现

    本实践项目旨在展示如何在Struts2中实现分页功能,适用于初学者学习和提升技能。 首先,我们来了解分页的基本原理。分页是将大量数据分成若干小部分,每次只加载一部分到页面上,用户可以通过导航按钮来浏览其他...

    struts2分页显示

    该文档详细描述了struts2版本的分页显示,值得一读

    经典struts2分页方法 JAVA_WEB必备分页 源码

    在分页中,这些方法需要接收分页参数并生成相应的SQL语句。 4. **结果映射(Result Mapping)**:Struts2配置文件中定义了Action执行后的结果,例如将页面重定向到某个JSP或Freemarker模板。在分页应用中,可能需要...

    jsp +struts 分页经典

    下面我们将深入探讨JSP和Struts框架,以及它们在分页、查询和数据操作中的应用。 首先,JSP是Java平台上的动态网页技术,它允许开发者将Java代码嵌入到HTML页面中,以实现服务器端的业务逻辑处理。JSP通过Java...

    hibernate+struts2分页代码

    【hibernate+struts2分页代码】是关于如何在Java Web开发中结合Hibernate ORM框架和Struts2 MVC框架实现数据分页的功能。在Web应用程序中,分页是提高用户体验的重要手段,它允许用户逐步浏览大量数据,而无需一次性...

    Struts 分页经典代码

    本实例中的“Struts 分页经典代码”就是一种实用的分页解决方案,旨在提供良好的用户体验。 分页技术主要涉及以下几个关键知识点: 1. **请求参数与模型绑定**:在Struts中,通常会通过Action类接收HTTP请求参数,...

    struts2分页代码的示例

    下面是我用Struts2做的一个分页显示实例,基本的思路是:把数据库表中的每一行数据封装成一个对象,用一个返回类型为List的方法返回这些对象,接着在Struts2的action里面定义一个List属性,用这个List来接收从数据库...

    MyBatis+struts2分页

    MyBatis增 删 改 查 struts2分页

    Struts完整分页

    通过以上步骤,我们可以构建出一个完整的Struts分页系统。这个过程中,关键是理解Struts的MVC架构以及如何在各层之间传递和处理分页信息。熟练掌握分页技术不仅能够提升用户体验,也有助于优化应用的性能和可维护性...

    hibernate+struts后台分页

    总的来说,"Hibernate+Struts后台分页"涉及到了Java Web开发中的多个层次,包括前端请求处理、后台业务逻辑、数据持久化以及性能优化。理解和熟练掌握这些技术对于构建高性能、高可用性的Web应用至关重要。

    struts2实现分页

    在分页实现中,我们主要利用 `&lt;s:bean&gt;` 创建 `org.apache.struts2.util.Counter` 类型的 bean 来控制循环范围。 #### 三、`&lt;s:bean&gt;` 标签的基本用法 `&lt;s:bean&gt;` 标签的基本语法如下: ```xml ... ``` - *...

    struts2分页系统

    这是struts的一个练习 这是struts的一个练习这是struts的一个练习这是struts的一个练习

    Struts2分页-自定义标签-类似百度分页

    Struts2分页是Web开发中的一个重要概念,它主要用于处理大量数据时,避免一次性加载所有数据导致页面响应慢或者浏览器崩溃。在这个场景中,我们提到的是使用自定义标签实现类似于百度分页的效果,这是一种常见的用户...

    Struts2分页

    Struts2实现分页功能,代码完整简洁易懂,可以直接拿去使用,欢迎拍砖

Global site tag (gtag.js) - Google Analytics