Topic: JSP及JSP页面的翻页 |
Print this page |
1.JSP及JSP页面的翻页 | Copy to clipboard |
Posted by: chengbd Posted on: 2004-06-21 11:25 在以列表的形式显示数据时需要对页面进行翻页控制,基本在项目的各模块中都会用到。为了最大限度地实现翻页的可重用和易移植,利用组件的形式对翻页逻辑进行封装。 翻页控制器的分析 描述: 翻页控制器用来实现对WEB页面的翻页内容的显示和翻页的各种操作的控制。通过JSP调用,将分页内容显示到WEB页面。它支持多种方式和风格的显示。 翻页控制器的设计 下面分别创建翻页控制器的一个PageConfig类、一个Page类、一个PageView类。 · PageConfig.java 类 类 PageConfig 声明 public class 描述 这个类用来保存页面属性的值,如每页显示几行等。 超类 执行 属性描述 属性 属性描述 定义 [PageConfig] |--PAGE_SIZE 页大小 public static final int |--PAGE_SIZE_SMALL 小型页面的大小 public static final int |--PAGE_SIZE_NORMAL 正常页面的大小 public static final int |--PAGE_SIZE_BIG 大型页面的大小 public static final int |--PAGE_SIZE_BIGGER 较大页面的大小 public static final int |--PAGE_SIZE_BIGGEST 最大页面的大小 public static final int · Page.java 类 类 Page 声明 public class 描述 这个类用来保存页面属性的值,如每页显示几行等。 超类 执行 java.lang.Serializable 属性描述 属性 名称 属性描述 数据类型 |--EMPTY_PAGE 空白页面 描述一个空白页面,即不含内容的页面。 Page对象 |--objects 结果集列表 结果集列表 java.util.List或java.util.Vector |--start 开始记录号 开始记录号,从0开始 正整数和0 |--end 结束记录号 结束记录号 正整数和0 |--viewStart 显示在页面开始记录号 显示在页面开始记录号,从1开始 正整数 |--viewEnd 显示在页面结束记录号 显示在页面结束记录号 正整数 |--hasPrevious 是否有上一页的开关 是否有上一页的开关 布尔值 |--previousPageNumber 上一页的页码 上一页的页码 正整数和0 |--hasNext 是否有下一页的开关 是否有下一页的开关 布尔值 |--nextPageNumber 下一页的页码 下一页的页码 正整数和0 |--total 总行数 一共有多少行记录 正整数和0 |--totalPage 总页数 一共有多少页 |--currentPageNumber 当前页 描述当前是第几页 正整数和0 |--pageSize 页大小 描述每页有多少行 正整数和0 构造器 构造器 构造器描述 参数 [Page] |--Page(List l, int s, boolean hasNext) 创建页面 l 结果集s 开始记录号,从0开始hasNext 是否有下一页的开关 |--Page(List l, int s, boolean hasNext, int total) 创建页面 l 结果集s 开始记录号,从0开始hasNext 是否有下一页的开关total 一共有多少行记录 |--Page(List l, int s, int size, boolean hasNext, int total) 创建页面 l 结果集s 开始记录号,从0开始size 每页有多少行hasNext 是否有下一页的开关total 一共有多少行记录 |-- Page(List l, int num, int size, int total) 创建页面 l 结果集num 当前是第几页size 每页有多少行total 一共有多少行记录 |-- Page(List l) 创建页面,不进行分页 l 结果集 方法 方法 方法描述 返回值 [Page] |--autoCalculate () 自动计算,根据当前页、页大小、总行数计算出其它属性的值 private void |--getList() 获得结果集 public List |--getViewStart() 获得显示在页面的开始记录号,从1开始 public int |--getViewEnd() 获得显示在页面的结束记录号 public int |--hasNextPage() 是否有下一页 public boolean |--hasPreviousPage () 是否有上一页 public boolean |--getPreviousPageNumber () 获得上一页的页码 public int |--getNextPageNumber () 获得下一页的页码 public int |--getTotal () 获得结果集中记录总行数 public int |--getTotalPage () 获得总页数 public int |--getCurrentPageNumber () 获得当前页码 public int |--getPageSize () 获得每页多少行记录 public int |--getStartOfNextPage () 获得下一页在结果集中开始的记录号,从0开始 public int |--getStartOfPreviousPage () 获得上一页在结果集中开始的记录号,从0开始 public int |--getSize() 获得当前页包括的记录行数 public int |--isEmpty() 判断当前页面是否是空白页面,如果当前页面是空白页面,返回true,否则,返回false public boolean PageView.java 类 类 PageView 声明 public class 描述 通过JSP调用,将分页内容显示到WEB页面。不支持图片、按钮等,只支持文字。用法:在JSP页面按如下形式定义:<% PageView view = new PageView(request,out,page); %>按缺省形式显示<% view.setVisible(true); %>按指定形式显示<% view.setVisible(true,0,1); %> 超类 执行 属性描述 属性 名称 属性描述 数据类型 [PageView] |--currentUrl 当前页面的URL 当前页面的URL 字符串 |--style 风格 风格 字符串 |--useSquareBrackets 是否加[]的开关 在"上一页"两边是否加上"["和"]" 布尔值 |--page WEB页面 WEB页面 Page对象 构造器 构造器 构造器描述 参数 [PageView] |-- PageView (HttpServletRequest request,JspWriter out,Page page)) 创建一个分页内容 request 客户端请求out 页面输出对象page WEB页面 方法 方法 方法描述 返回值 [PageView] |--setVisible(boolean visible) 按缺省形式显示分页内容,如果visible为true,则显示分页内容,否则,不显示分页内容 public void |--setVisible(boolean visible,int style,int order) 按指定形式显示分页内容,如果visible为true,则显示分页内容,否则,不显示分页内容 public void |--setVisible(boolean visible,boolean useSquareBrackets,int style,int order) 按指定形式显示分页内容,如果visible为true,则显示分页内容,否则,不显示分页内容 public void |--viewPage(boolean useSquareBrackets,int style,int order) 按指定形式显示分页内容,order为0,表示完整形式,按如下顺序显示:共计:18 分页:2 当前页:1 每页:10 首页 前页 后页 尾页 转到□□□□order为1,表示简洁形式,按如下顺序显示:前页 后页 尾页 1/2order为2,表示完整形式2,按如下顺序显示:共计:18 每页:10 转到□□□□ 首页 前页 后页 尾页 1/2 public void 翻页控制器的编码 只需按翻页控制器的设计进行编码,这里不用再讲了。 翻页控制器组件的源代码 a)PageConfig.java b)Page.java c)PageView.java 源代码:立即下载 翻页控制器的调用 翻页控制器的调用实在太简单了,调用方法: · 导入翻页控制器包 <%@ page import="java.util.List,com.cwap.oa.controller.web.page.Page, com.cwap.oa.controller.web.page.PageView"%> · 创建一个Page对象,Page.EMPTY_PAGE为空白页面 Page page = Page.EMPTY_PAGE; · 创建一个PageView对象 <% PageView view = new PageView(request,out,page); %> · 显示分页的内容: 按缺省形式显示 <% view.setVisible(true); %> 按指定形式显示 <% view.setVisible(true,0,1); %> · 调用翻页控制器的例子 下面是在论坛板块中的一个JSP中调用的示例,用来显示所有的论坛板块列表,下面只列出部分代码: <%@ page language="java"%> <%@ page contentType="text/html; charset=GBK"%> <%@ page import="java.util.List, com.cwap.oa.controller.web.page.PageView,com.cwap.oa.controller.web.page.Page"%> <jsp:useBean id="forumBoardHelper" scope="page" class="com.club8090.forum.forumboard.client.ForumBoardClientHelper"/> <% String tmp=request.getParameter("pageNumber"); int pageNumber = 0; if(tmp==null || tmp.equals("")){ pageNumber = 1; }else{ try { pageNumber = Integer.parseInt(tmp); }catch(java.lang.NullPointerException npe){ pageNumber = 1; }catch(java.lang.NumberFormatException nfe){ pageNumber = 1; } } Page page = Page.EMPTY_PAGE;//page初始化为Page.EMPTY_PAGE空白页面 page = forumBoardHelper.getAllForumBoards(pageNumber); %> … <table> <tr> <td>NO.</td> <td>名称</td> <td>描述摘要</td> </tr> <% List items = page.getList(); if( items.isEmpty() ) { out.println("<tr colspan=3>没有记录存在</tr>"); }else{ int no;//页面中显示的行数 for (int i = 0; i < items.size(); i++) { ForumBoardModel forumBoardModel = (ForumBoardModel)items.get(i); no = page.getViewStart() + i; %> //显示记录列表 <tr> <td><%= no %></td> <td><%= forumBoardModel.getName() %></td> <td><%= forumBoardModel.getSummary() %></td> </tr> <% } PageView view = new PageView(request,out,page); view.setVisible(true,0,1); } %> </table> … 2_pagecontroller.rar (6.23k) |
Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1 客服电话 18559299278 客服信箱 714923@qq.com 客服QQ 714923 |