网易拍卖 - 同城约会 - 交友中心 - 同学录 - 25MB免费邮箱 - 网易短信王
 你目前的位置是: 网易首页-->科技频道
   
利用组件对翻页逻辑进行封装--JSP及JSP页面的翻页
2003年04月07日15:54:28 赛迪网 余斌斌


同城约会
城市之星
上海/征友
北京 上海
广州 深圳
成都 杭州
重庆 沈阳
武汉 南京
全国城市上传我的照片
最近一小时热门文章
  • 惠普女掌门卡莉第四次访华是轻松之旅
  • 惠普发布安全补丁 修补Tru64 UNIX安全漏洞
  • 英特尔CTO将访华 欲与政府商讨有关WAPI标准
  • 苹果电脑股价涨幅创3年新高 传言将被索尼收购
  • 欧盟定于3月24日宣布对微软垄断案的最后裁决

    网易拍卖
    有货要卖

    频道精选
  • 网易公司财报将实现净盈利2700万元
  • 网易公司收入增长脚踏实地迈向盈利
  • 网易公司第三季度财务表盈利2530万
  • 网易公司可望率先摆脱"垃圾股"概念

      
    在以列表的形式显示数据时需要对页面进行翻页控制,基本在项目的各模块中都会用到。为了最大限度地实现翻页的可重用和易移植,利用组件的形式对翻页逻辑进行封装。

    翻页控制器的分析

    描述:

    翻页控制器用来实现对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>
    …
    


    发表评论』『写信给编辑』『 』『关闭窗口

     相关文章
    JSP/Servlet 中的汉字编码问题 (21日)
    Servlet/JSP服务器端的重定向 (21日)
    用缓冲技术提高JSP应用的性能和稳定性 (21日)
    如何使用JSP开发WebMail系统 (21日)
     科技论坛

     热力推荐

    About NetEase - 公司简介 - 联系方法 - 招聘信息 - 客户服务 - 相关法律 - 广告服务
    网易公司版权所有
    ©1997-2004