jsp分页技术实现Word文件下载.docx
- 文档编号:21861296
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:22
- 大小:38.19KB
jsp分页技术实现Word文件下载.docx
《jsp分页技术实现Word文件下载.docx》由会员分享,可在线阅读,更多相关《jsp分页技术实现Word文件下载.docx(22页珍藏版)》请在冰豆网上搜索。
PagedStatement
封装了数据库连接、总记录数查询、分页查询、结果数据封装和关闭数据库连接等操作,并使用了PreparedStatement支持动态设置参数。
RowSetPage
参考PetStore的page
page
iterator模式,
设计RowSetPage用于封装查询结果(使用OracleCachedRowSet缓存查询出的一页数据,关于使用CachedRowSet封装数据库查询结果请参考JSP页面查询显示常用模式)以及当前页码、总记录条数、当前记录数等信息,
并且可以生成简单的HTML分页代码。
查询的结果封装成RowsetPage。
下面是简单的使用示例:
1.
2.
RowSet
empRS
=
.RowSet)
();
3.
if
(empRS!
=null)
while
()
{
4.%>
5.
tr>
6.
td>
%=
("
EMP_ID"
)%>
/td>
7.
EMP_CODE"
8.
USER_NAME"
9.
REAL_NAME"
10.
/tr>
11.<
%
12.
}etHTML("
doQuery"
"
pageno"
13.
14.
/table>
15.
/form>
效果如图:
因为分页显示一般都会伴有查询条件和查询动作,页面应已经有校验查询条件和提交查询的javascript方法(如上面的doQuery),所以()生成的分页代码在用户选择新页码时直接回调前面的处理提交查询的javascript方法。
注意在显示查询结果的时候上次的查询条件也需要保持,如<
input
type=text
name=gender
size=1
value="
%=("
gender"
>
。
同时由于页码的参数名可以指定,因此也支持在同一页面中有多个分页区。
另一种分页代码实现是生成每一页的URL,将查询参数和页码作为QueryString附在URL后面。
这种方法的缺陷是在查询条件比较复杂时难以处理,并且需要指定处理查询动作的servlet,可能不适合某些定制的查询操作。
如果对()生成的默认分页代码不满意可以编写自己的分页处理代码,RowSetPage提供了很多getter方法用于获取相关信息(如当前页码、总页数、
总记录数和当前记录数等)。
在实际应用中可以将分页查询和显示做成jsp
taglib,
进一步简化JSP代码,屏蔽Java
Code。
附:
分页工具类的源代码,
有注释,应该很容易理解。
继承Page)
继承PagedStatement)
您可以任意使用这些源代码,但必须保留author字样
2.List;
3.import
.ArrayList;
4.import
.Collection;
5.import
.Collections;
6.
7.
8./**
Title:
分页对象<
br>
Description:
用于包含数据及分页信息的对象<
11.
Page类实现了用于显示分页信息的基本方法,但未指定所含数据的类型,
可根据需要实现以特定方式组织数据的子类,<
如RowSetPage以RowSet封装数据,ListPage以List封装数据<
Copyright:
Copyright
(c)
2002
@author
16.
@version
17.
*/
18.public
class
Page
implements
.Serializable
19.
public
static
final
EMPTY_PAGE
new
Page();
20.
int
DEFAULT_PAGE_SIZE
20;
21.
MAX_PAGE_SIZE
9999;
22.
23.
private
myPageSize
DEFAULT_PAGE_SIZE;
24.
25.
start;
26.
avaCount,totalSize;
27.
Object
data;
28.
29.
currentPageno;
30.
totalPageCount;
31.
32.
/**
33.
默认构造方法,只构造空页
34.
35.
protected
Page(){
36.
(0,0,0,DEFAULT_PAGE_SIZE,new
Object());
37.
}
38.
39.
40.
分页数据初始方法,由子类调用
41.
@param
start
本页数据在数据库中的起始位置
42.
avaCount
本页包含的数据条数
43.
totalSize
数据库中总记录条数
44.
pageSize
本页容量
45.
data
本页包含的数据
46.
47.
void
init(int
start,
avaCount,
totalSize,
pageSize,
data){
48.
49.
=avaCount;
50.
pageSize;
51.
52.
53.
totalSize;
54.
55.
=data;
56.
57.
ength()<
1)
58.
queryJSFunctionName
gotoPage"
;
59.
60.
(pageNoParamName
==
null
||
().length()<
1){
61.
pageNoParamName
62.
63.
64.
String
gotoPage
_"
+queryJSFunctionName;
65.
66.
StringBuffer
html
StringBuffer("
\n"
);
67.
script
language=\"
\"
)
68.
.append("
function
).append(gotoPage).append("
(pageNo){
69.
.append(
var
curPage=1;
70.
try{
curPage
[\"
71.
.append(pageNoParamName).append("
].value;
72.
).append(pageNoParamName)
73.
].value
pageNo;
74.
).append(queryJSFunctionName).append("
(pageNo);
75.
return
true;
76.
}catch(e){
77.ppend(
78.ppend(
[0].submit();
79.ppend(
80.
alert('
尚未定义查询方法:
81.
.append(queryJSFunctionName).append("
()'
82.
83.
curPage;
84.
false;
85.ppend(
}
86.
87.
}"
88.
/script>
89.
90.
(
table
border=0
cellspacing=0
cellpadding=0
align=center
width=80%>
91.
92.
td
align=left>
93.
共"
).append(
getTotalPageCount()
页"
94.
["
.append(getStart()).append("
.."
).append(getEnd())
95.
/"
).append()).append("
]
96.
97.
align=right>
98.
(hasPreviousPage()){
99.
[<
a
href='
javascript:
).append(gotoPage)
100.
.append(getCurrentPageNo()-1)
101.
)'
上一页<
/a>
102.
103.
第"
104.
name='
105.
'
onChange='
106.
.append(gotoPage).append("
107.
selected
selected"
108.
for(int
i=1;
i<
=getTotalPageCount();
i++){
109.
if(
i
getCurrentPageNo()
110.
111.
else
112.
option
value='
).append(i).append("
113.
.append(selected).append("
/option>
114.
115.
(getCurrentPageNo()>
getTotalPageCount()){
116.
).append(getCurrentPageNo())
117.
selected>
118.
119.
120.
/select>
页
121.
(hasNextPage()){
122.
123.
).append((getCurrentPageNo()+1))
124.
下一页<
125.
126.
127.
128.
129.
130.
131.}
132.
133.
134.
135.
136.RowSet;
137.
138.
139./**
140.
p>
RowSetPage<
/p>
141.
使用RowSet封装数据的分页对象<
142.
2003<
143.
@author
144.
145.
146.
147.public
RowSetPage
extends
148.
.RowSet
rs;
149.
150.
151.
*空页
152.
153.
RowSetPage();
154.
155.
156.
*默认构造方法,创建空页
157.
158.
RowSetPage(){
159.
this(null,
0,0);
160.
161.
162.
163.
*构造分页对象
164.
*@param
crs
包含一页数据的OracleCachedRowSet
165.
该页数据在数据库中的起始位置
166.
数据库中包含的记录总数
167.
168.
RowSetPage(RowSet
crs,
totalSize)
169.
this(crs,start,totalSize,;
170.
171.
172.
173.
174.
175.
176.
177.
*@pageSize
本页能容纳的记录数
178.
179.
pageSize)
180.
try{
181.
avaCount=0;
182.
(crs!
183.
184.
()){
185.
186.
187.
188.
189.
190.
rs
crs;
191.
(start,avaCount,totalSize,pageSize,rs);
192.
}catch.SQLException
sqle){
193.
throw
RuntimeException());
194.
195.
196.
197.
198.
*取分页对象中的记录数据
199.
200.
getRowSet(){
201.
202.
203.
204.
205.}
206.
207.
208.
209.
210.BigDecimal;
211.import
.List;
212.import
.Iterator;
213.import
214.
215.import
.Connection;
216.import
.SQLException;
217.import
.ResultSet;
218.import
.Statement;
219.import
.Prepar
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- jsp 分页 技术 实现