如何在Struts中实现分页显示数据

 我来答
福喜900
2015-02-02 · TA获得超过6.1万个赞
知道大有可为答主
回答量:1.1万
采纳率:0%
帮助的人:9952万
展开全部

      在网页编程中,经常需要利用分页显示数据,下面是我的分页显示的例子。

      先说我的设计思路:

      1.首先用一个PageData类保存页面相关的数据,有三个域:

            a.一个Collection域,用于保存页面显示的数据集合;

            b.一个表示当前页数的int域;

            c.一个表示最大页数的int域。

      2.一个Action实现,TurnPageAction用于控制页面的翻转。它需要一个ActionForm实例,这个实例保存TurnPageAction需要的一些数据,在Struts1.1以后,完全可以用一个DynaActionForm实现,因为我这个例子是在用Struts1.0时实现的,所以就保留了下来。

      下图是我的实现流程图:


      PageData类代码:


  1import java.util.Collection;

  2

  3/**

  4 * <p>Title: </p>

  5 * <p>Description: </p>

  6 * <p>Copyright: Copyright (c) 2003</p>

  7 * <p>Company: </p>

  8 * @author George Hill

  9 * @version 1.0

 10 */

 11

 12public class PageData {

 13

 14  /**

 15   * 每页显示的数据行数

 16   */

 17  public final static int NUMBER_PER_PAGE = 15;

 18

 19  /**

 20   * 保存页面显示的数据集合

 21   */

 22  protected Collection list;

 23

 24  /**

 25   * 当前页数

 26   */

 27  protected int page;

 28

 29  /**

 30   * 最大页数

 31   */

 32  protected int maxPage;

 33

 34  /**

 35   * 无参构造方法

 36   */

 37  public PageData() {}

 38

 39  /**

 40   * 构造方法

 41   * @param list 数据集

 42   * @param page 当前页数

 43   * @param maxPage 最大页数

 44   */

 45  public PageData(Collection list, int page, int maxPage) {

 46    this.list = list;

 47    this.page = page;

 48    this.maxPage = maxPage;

 49  }

 50

 51  /**

 52   * 获得数据集合

 53   * @return 数据集合

 54   */

 55  public Collection getList() {

 56    return this.list;

 57  }

 58

 59  /**

 60   * 设置数据集合

 61   * @param list 新的数据集合

 62   */

 63  public void setList(Collection list) {

 64    this.list = list;

 65  }

 66

 67  /**

 68   * 获得当前页数

 69   * @return 当前页数

 70   */

 71  public int getPage() {

 72    return this.page;

 73  }

 74

 75  /**

 76   * 获得上页页数

 77   * @return 上页页数

 78   */

 79  public int getPrePage() {

 80    int prePage = page - 1;

 81

 82    if (prePage <= 0)

 83      prePage = 1;

 84

 85    return prePage;

 86  }

 87

 88  /**

 89   * 获得下页页数

 90   * @return 下页页数

 91   */

 92  public int getNextPage() {

 93    int next = page + 1;

 94

 95    if (next > maxPage)

 96      next = maxPage;

 97

 98    return next;

 99  }

100

101  /**

102   * 设置当前页数

103   * @param page 当前页数新值

104   */

105  public void setPage(int page) {

106    this.page = page;

107  }

108

109  /**

110   * 获得最大页数

111   * @return 最大页数

112   */

113  public int getMaxPage() {

114    return this.maxPage;

115  }

116

117  /**

118   * 设置最大页数

119   * @param maxPage 最大页数新值

120   */

121  public void setMaxPage(int maxPage) {

122    this.maxPage = maxPage;

123  }

124

125  /**

126   * 获得首页标识

127   * @return 首页标识

128   */

129  public boolean isFirstPage() {

130    if (this.page <= 1)

131      return true;

132

133    return false;

134  }

135

136  /**

137   * 获得末页标识

138   * @return 末页标识

139   */

140  public boolean isLastPage() {

141    if (this.page >= this.maxPage)

142      return true;

143

144    return false;

145  }

146}

147


      TurnPageForm类代码:


  1import javax.servlet.http.*;

  2import org.apache.struts.action.*;

  3

  4/**

  5 * <p>Title: </p>

  6 * <p>Description: </p>

  7 * <p>Copyright: Copyright (c) 2003</p>

  8 * <p>Company: </p>

  9 * @author George Hill

 10 * @version 1.0

 11 */

 12

 13public class TurnPageForm extends ActionForm{

 14  

 15  /**

 16   * 要跳转的页码

 17   */

 18  protected int page;

 19

 20  /**

 21   * 跳转按钮

 22   */

 23  protected String turn;

 24

 25  /**

 26   * 首页按钮

 27   */

 28  protected String first;

 29

 30  /**

 31   * 上一页按钮

 32   */

 33  protected String preview;

 34

 35  /**

 36   * 下一页按钮

 37   */

 38  protected String next;

 39

 40  /**

 41   * 末页按钮

 42   */

 43  protected String last;

 44

 45  /**

 46   * 跳转地址

 47   */

 48  protected String url;

 49

 50  /**

 51   * 当前页码

 52   */

 53  protected int currentPage;

 54

 55  /**

 56   * 最大页码

 57   */

 58  protected int maxPage;

 59

 60  /**

 61   * 获得跳转页码

 62   * @return 跳转页码

 63   */

 64  public int getPage() {

 65    return this.page;

 66  }

 67

 68  /**

 69   * 设置跳转页码

 70   * @param page 跳转页码值

 71   */

 72  public void setPage(int page) {

 73    this.page = page;

 74  }

 75

 76  /**

 77   * 获得跳转按钮值

 78   * @return 跳转按钮值

 79   */

 80  public String getTurn() {

 81    return this.turn;

 82  }

 83

 84  /**

 85   * 设置跳转按钮值

 86   * @param turn 跳转按钮值

 87   */

 88  public void setTurn(String turn) {

 89    this.turn = turn;

 90  }

 91

 92  /**

 93   * 获得首页按钮值

 94   * @return 首页按钮值

 95   */

 96  public String getFirst() {

 97    return this.first;

 98  }

 99

100  /**

101   * 设置首页按钮值

102   * @param first 首页按钮值

103   */

104  public void setFirst(String first) {

105    this.first = first;

106  }

107

108  /**

109   * 获得上一页按钮值

110   * @return 上一页按钮值

111   */

112  public String getPreview() {

113    return this.preview;

114  }

115

116  /**

117   * 设置上一页按钮值

118   * @param preview 上一页按钮值

119   */

120  public void setPreview(String preview) {

121    this.preview = preview;

122  }

123

124  /**

125   * 获得下一页按钮值

126   * @return 下一页按钮值

127   */

128  public String getNext() {

129    return this.next;

130  }

131

132  /**

133   * 设置下一页按钮值

134   * @param next 下一页按钮值

135   */

136  public void setNext(String next) {

137    this.next = next;

138  }

139

140  /**

141   * 获得末页按钮值

142   * @return 末页按钮值

143   */

144  public String getLast() {

145    return this.last;

146  }

147

148  /**

149   * 设置末页按钮值

150   * @param last 末页按钮值

151   */

152  public void setLast(String last) {

153    this.last = last;

154  }

155

156  /**

157   * 获得跳转地址

158   * @return 跳转地址

159   */

160  public String getUrl() {

161    return this.url;

162  }

163

164  /**

165   * 设置跳转地址

166   * @param url 跳转地址

167   */

168  public void setUrl(String url) {

169    this.url = url;

170  }

171

172  /**

173   * 获得当前页码

174   * @return 当前页码

175   */

176  public int getCurrentPage() {

177    return this.currentPage;

178  }

179

180  /**

181   * 设置当前页码

182   * @param page 当前页码值

183   */

184  public void setCurrentPage(int page) {

185    this.currentPage = page;

186  }

187

188  /**

189   * 获得最大页码

190   * @return 最大页码

191   */

192  public int getMaxPage() {

193    return this.maxPage;

194  }

195

196  /**

197   * 设置最大页码

198   * @param page 最大页码

199   */

200  public void setMaxPage(int page) {

201    this.maxPage = page;

202  }

203

204  /**

205   * 重置属性

206   * @param mapping action映射

207   * @param request HTTP请求

208   */

209  public void reset(ActionMapping mapping, HttpServletRequest request) {

210    this.page = 0;

211    this.turn = null;

212    this.first = null;

213    this.preview = null;

214    this.next = null;

215    this.last = null;

216    this.url = null;

217    this.currentPage = 0;

218    this.maxPage = 0;

219  }

220

221}

222

      TurnPageAction代码:


 1import java.io.*;

 2import javax.servlet.*;

 3import javax.servlet.http.*;

 4

 5import org.apache.struts.action.*;

 6

 7import xxx.TurnPageForm;

 8

 9/**

10 * <p>Title: </p>

11 * <p>Description: </p>

12 * <p>Copyright: Copyright (c) 2003</p>

13 * <p>Company: </p>

14 * @author George Hill

15 * @version 1.0

16 */

17

18public class TurnPageAction extends Action {

19

20  /**

21   * 执行用户的跳转页面请求

22   * @param mapping 转发映射表

23   * @param form 请求的ActionForm Bean

24   * @param request 用户请求

25   * @param response 用户应答

26   * @return 成功或者失败的转发

27   * @throws IOException IO例外

28   * @throws ServletException Servlet例外

29   */

30  public ActionForward execute(ActionMapping mapping, ActionForm form,

31                               HttpServletRequest request,

32                               HttpServletResponse response) throws IOException,

33      ServletException {

34    if (form instanceof TurnPageForm) {

35      TurnPageForm tform = (TurnPageForm) form;

36      int page = 0;

37      String url = null;

38

39      if (tform.getTurn() != null) {

40        page = tform.getPage();

41      } else if (tform.getFirst() != null) {

42        page = 1;

43      } else if (tform.getPreview() != null) {

44        page = tform.getCurrentPage() - 1;

45      } else if (tform.getNext() != null) {

46        page = tform.getCurrentPage() + 1;

47      } else if (tform.getLast() != null) {

48        page = tform.getMaxPage();

49      }

50

51      if (page < 1) {

52        page = 1;

53      } else if (page > tform.getMaxPage()) {

54        page = tform.getMaxPage();

55      }

56      if (tform.getUrl().indexOf("?") == -1) {

57        url = tform.getUrl() + "?page=" + page;

58      } else {

59        url = tform.getUrl() + "&page=" + page;

60      }

61      return new ActionForward(url);

62    }

63

64    return mapping.findForward("error");

65  }

66}

67


      struts-config.xml的相关片断:


 1<?xml version="1.0" encoding="UTF-8"?>

 2<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "ht tp:/ /jakarta.apac he.o rg/struts/dtds/stru ts-config_1_1.dtd">

 3<struts-config>

 4  <form-beans>

 5

 6    <form-bean name="turnPageForm" type="xxx.TurnPageForm" />

 7

 8  </form-bean>

 9  <action-mappings>

10

11    <action name="turnPageForm" path="/turnPage" scope="request" type="xxx.TurnPageAction" />

12  </action-mappings>

13</struts-config>

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式