JSP及JSP页面的翻页

js|翻页|页面

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

描述:

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

 

时间: 2024-10-26 16:57:29

JSP及JSP页面的翻页的相关文章

JAVA/JSP学习系列之六(MySQL翻页例子)_JSP编程

一.运行前准备 下载了mysql的jdbc驱动(一个jar文件)并加载在CLASSPATH(方法见<JAVA/JSP学习系列之一(JDK安装) >) (如果找不到,请从本站下载) 建一个MySQL数据库test 数据库中有一个表:note,字段为:name(varchar) 二.下载,安装 <%@ page contentType="text/html;charset=gb2312" %> <% java.sql.Connection sqlCon; //

JAVA/JSP学习系列之五(JDBC-ODBC翻页例子)

js|odbc|翻页 一.运行前准备 建议了一个MS SQLServer7数据库 DNS,名称为:Test_DB 数据库中有一个表:guestbook字段为:name(varchar),email(varchar),body(text) 数据库用户为sa 密码空,可以自己修改的. 二.代码 <%@ page contentType="text/html;charset=gb2312"%> <% //变量声明 java.sql.Connection sqlCon; //

JAVA/JSP学习系列之五(JDBC-ODBC翻页例子)_JSP编程

一.运行前准备 建议了一个MS SQLServer7数据库 DNS,名称为:Test_DB 数据库中有一个表:guestbook字段为:name(varchar),email(varchar),body(text) 数据库用户为sa 密码空,可以自己修改的. 二.代码 <%@ page contentType="text/html;charset=gb2312"%> <% //变量声明 java.sql.Connection sqlCon; //数据库连接对象 jav

jsp框架中如何在翻页后保持复选框的选取状态?

问题描述 如题:选择数据量巨大 多次选取 在翻页后也应该保持选取状态 最后提交给数据库给个思路即可 不用代码 问题补充:Copperfield 写道 解决方案 数据量大的话用:一,把选择记录写入cookie保存下来,然后在获取二,把选择记录保存在session中,在翻页后可以将其写入到隐藏表单中数据量小的话:用Copperfield提供的方法会更方便其实只需要想办法获取前面选择复选框值就可以了解决方案二:在当前页使用隐藏域记录选取的值,翻页后再返回时,根据隐藏域是否有值设置复选框状态.解决方案三

JAVA/JSP学习系列之六(MySQL翻页例子)

一.运行前准备 下载了mysql的jdbc驱动(一个jar文件)并加载在CLASSPATH(方法见<JAVA/JSP学习系列之一(JDK安装) >) (如果找不到,请从本站下载) 建一个MySQL数据库test 数据库中有一个表:note,字段为:name(varchar) 二.下载,安装 <%@ page contentType="text/html;charset=gb2312" %> <% java.sql.Connection sqlCon; //

JAVA/JSP学习系列之八(改写MySQL翻页例子)

js|mysql|翻页 一.前言 其实,改写后的JDBC Data-Source是运行在Servlet中的,通过JNDI去查找数据源.我用Orion试的,将本站<JAVA/JSP学习系列之六(MySQL翻页例子) > 简单改写了一下. 二.配置 (1)JDBC 需要将用到的JDBC驱动Copy到[ORION]/lib目录下 (2)data-source 在[ORION]/config/data-sources.xml文件中加入如下: 〈data-source class="com.e

JAVA/JSP学习系列之八(改写MySQL翻页例子)_JSP编程

一.前言 其实,改写后的JDBC Data-Source是运行在Servlet中的,通过JNDI去查找数据源.我用Orion试的,将本站<JAVA/JSP学习系列之六(MySQL翻页例子) > 简单改写了一下. 二.配置 (1)JDBC 需要将用到的JDBC驱动Copy到[ORION]/lib目录下 (2)data-source 在[ORION]/config/data-sources.xml文件中加入如下: 〈data-source class="com.evermind.sql.

asp.net做个批量生成html的网站,生成静态页图片翻页怎么做啊?index_1.html,index_2.html 这样子 上一页1 2 3 4 5下一页

问题描述 asp.net做个批量生成html的网站,生成静态页图片翻页怎么做啊index_1.html,index_2.html这样子上一页12345下一页或者上一页下拉列表(可以选择页)下一页各们大哥怎么实现??是个图片站index_1.html,index_2.html,index_3.html,index_4.html每个页不同的图片.请教... 解决方案 解决方案二:分页我一般还是用动态分页,然后重写url为.htm解决方案三:分页在生成时就应该把相应的页面链接写进去阿:分页其实比较难以

ASP翻页功能在火狐中JS不起作用

问题描述 我有一个页面有翻页功能,在IE正常使用,但是在火狐就不能用(点击链接没有反应),是JS没有起作用,但是不知道是JS没有触发成功,还是函数没有起作用.HTML部分:<ahref="javascript:pFirst();">首页</a>这个是翻页链接JS部分:functionpFirst(){document.all.hdCurPageNum.value=1;pSubmit();}functionpSubmit(){document.form1.acti