在J S P页面中实现检索数据的
e m a i l:z e r g m a n@c h i n a a s p.c o m
日期:6/12/20011:05:13P M
发布者:f l y f o x
在页面中,当检索的数据很多时,通常需要分页显示数据,并要实现翻页。
下面将通过一些例程来说明实现J S P页面翻页技术的实现。
首先,在J S P中,通过J A V A s e r v l e t来检索数据,而用J S P来调用结果来显示。 因而,此技术可分为两个部分(依赖关系):
1.在服务器端的s e r v l e t中的实现
要点:
&将查询条件保存到s e s s i o n中,取s e s s i o n中的查询条件
&设置S t a t e m e n t对象的M a x R o w s(确定一页显示多少行数据)
&顺序地通过执行S Q L语句查询数据,按m a x R o w s来检索一个m a x R o w s的数据, 下一页再检索下一m a x R o w s的数据,以此类推。
2.在J S P中的显示实现
要点:
&显示m a x R o w s条数据
&通过“下一页”按钮或超链再次调用刚才的s e r v l e t查询下一m a x R o w s的数据 流程如图所示:
下面通过一个例程来说明(一个s e r v l e t程序和一个J S P程序):
l q u e r y m e d i c i n e.j a v a(M e d i c i n e.q u e r y m e d i c i n e)
p a c k a g e M e d i c i n e;
i m p o r t j a v a x.s e r v l e t.*;
i m p o r t j a v a x.s e r v l e t.h t t p.*;
i m p o r t j a v a.i o.*;
i m p o r t j a v a.u t i l.*;
i m p o r t j a v a.s q l.*;
i m p o r t M e d i c i n e.m e d i c i n e l i s t;
i m p o r t M e d i c i n e.s e a r c h D a t a;
第 1页
////////////////////////////////////////////////////
//接---m u t i q u e r y.j s p页面,并从r e q u e s t中得到5条查询条件 ///
//按条件查询药品,并将结果存进s e s s i o n的“m e d i c i n e l i s t”中。 ///
//张乾 2000年3月15日 ///
////////////////////////////////////////////////////
p u b l i c c l a s s q u e r y m e d i c i n e e x t e n d s H t t p S e r v l e t{
p r i v a t e D B C o n n e c t i o n M a n a g e r c o n n M g r;
//I n i t i a l i z e g l o b a l v a r i a b l e s
p u b l i c v o i d i n i t(S e r v l e t C o n f i g c o n f i g)t h r o w s S e r v l e t E x c e p t i o n{
s u p e r.i n i t(c o n f i g);
c o n n M g r=D B C o n n e c t i o n M a n a g e r.g e t I n s t a n c e();
}
//========================处理 H T T P G e t请求============================
p u b l i c v o i d d o G e t(H t t p S e r v l e t R e q u e s t r e q u e s t,H t t p S e r v l e t R e s p o n s e r e s p o n s e) t h r o w s S e r v l e t E x c e p t i o n,I O E x c e p t i o n{
S t a t e m e n t s t m t=n u l l;
C o n n e c t i o n c o n=c o n n M g r.g e t C o n n e c t i o n("m e d i c i n e");
i f(c o n==n u l l){
r e s p o n s e.s e n d R e d i r e c t("/m e d i c i n e/c o n_e r r o r.h t m l");
r e t u r n;
}
//====================创建数据库S t a t e m e n t=============================
t r y{
s t m t=c o n.c r e a t e S t a t e m e n t();
}
c a t c h(E x c e p t i o n e)
{
c o n n M g r.f r e e C o n n e c t i o n("m e
d i c i n e",c o n);
第 2页
r e s p o n s e.s e n d R e d i r e c t("/m e d i c i n e/s t m t_e r r o r.h t m l");
r e t u r n;
}
//-------------------------------------------------------------
l o n g a l l_c o u n t=0;//存满足条件的药品总数
//===================从r e q u e s t中得到s e s s i o n======================
t r y{
H t t p S e s s i o n s e s s i o n=r e q u e s t.g e t S e s s i o n(f a l s e);
i f(s e s s i o n==n u l l){
c o n n M g r.f r e e C o n n e c t i o n("m e
d i c i n e",c o n);
r e s p o n s e.s e n d R e d i r e c t("/m e d i c i n e/s e s s i o n_e r r o r.h t m l");
r e t u r n;
}
//-----------------------------------------------------------
//======从“下一页”提交来的参数取得前页最后一条数据的药品编码=======
S t r i n g l l_p o s=r e q u e s t.g e t P a r a m e t e r("p o s");
//如果p o s=-1则表示要从头开始查
//----------------------------------------------------------
//=====================查询用的S Q L语句串==========================
S t r i n g s q l s t a t m e n t="S E L E C T m e d i c i n e s.y p b m,m e d s m a l l t y p e s.z l m c,
m e d s u p e r t y p e s.c l m c,
m e d t y p e s.d l m c,m e d i c i n e s.y p m,m e d i c i n e s.z y y x,m e d i c i n e s.y p z y F R O M m e d i c i n e s, m e d s m a l l t y p e s,m e d s u p e r t y p e s,m e d t y p e s W H E R E m e d i c i n e s.y p b m>"+l l_p o s+"
a n d((m e d s m a l l t y p e s.z l
b m=m e d i
c i n e s.z l b m)a n d(m e
d s u p
e r t y p e s.c l b m=
m e d i c i n e s.c l b m)
a n d(m e d t y p e s.d l
b m=m e d i
javaservlet和jsp的比较c i n e s.
d l b m)a n d((m
e d i c i n e s.d e l_
f l a g=0)"; //-----------------------------------------------------
S t r i n g z l b m;
S t r i n g d l b m;
S t r i n g c l b m;
S t r i n g z y y x;
S t r i n g y p m;
第 3页
s e a r c h D a t a s l i s t=n e w s e a r c h D a t a();
s y n c h r o n i z e d(s e s s i o n){
s l i s t=(s e a r c h D a t a)s e s s i o n.g e t A t t r i b u t e("s e a r c h L i s t");
}
i f(l l_p o s.e q u a l s("-1")){
//===表示不是由“下一页”过来要从头开始查数据==========
i f(s l i s t!=n u l l){
s y n c h r o n i z e d(s e s s i o n){
s e s s i o n.r e m o v e A t t r i b u t e("s e a r c h L i s t");
}
}
s l i s t=n e w s e a r c h D a t a();
/
/=============从设置查询条件页面取得查询条件的参数=================== z l b m=r e q u e s t.g e t P a r a m e t e r("z l b m");
d l b m=r
e q u e s t.g e t P a r a m e t e r("d l b m");
c l b m=r e q u e s t.g e t P a r a m e t e r("c l b m");
z y y x=r e q u e s t.g e t P a r a m e t e r("z y y x");
y p m=r e q u e s t.g e t P a r a m e t e r("y p m");
//------------------------------------------------------
//=================将查询条件参数通过V e c t o r存到s e s s i o n中==========
s l i s t.s e t Z l b m(z l b m);
s l i s t.s e t D l b m(d l b m);
s l i s t.s e t C l b m(c l b m);
s l i s t.s e t Z y y x(z y y x);
s l i s t.s e t Y p m(y p m);
s y n c h r o n i z e d(s e s s i o n){
s e s s i o n.s e t A t t r i b u t e("s e a r c h L i s t",s l i s t);
}
第 4页
//---------------------------------------------------------
}
//--------------------------------------------------------
e l s e
{
/
/============================取出查询条件参数====================
i f(s l i s t!=n u l l){
z l b m=s l i s t.g e t Z l b m();
d l b m=s l i s t.g
e t D l b m();
c l b m=s l i s t.g e t C l b m();
z y y x=s l i s t.g e t Z y y x();
y p m=s l i s t.g e t Y p m();
}
e l s e{
i f(s t m t!=n u l l)s t m t.c l o s e();
s t m t.s e t M a x R o w s(0);
c o n n M g r.f r e e C o n n e c t i o n("m e
d i c i n e",c o n);
r e s p o n s e.s e n d R e d i r e c t("/m e d i c i n e/s e s s i o n_e r r o r.h t m l");
r e t u r n;
}
//-------------------------------------------------
}
S t r i n g s q l2="s e l e c t c o u n t(*)f r o m m e d i c i n e s w h e r e d e l_f l a g=0";
//=====================根据条件参数设置S Q L语句======================= i f(!(z l b m.t r i m().e q u a l s("0"))){
s q l s t a t m e n t+=("a n d(m e d i c i n e s.z l b m='"+z l b m.t r i m()+"')");
s q l2+=("a n d z l b m='"+z l b m.t r i m()+"'");
}
第 5页
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论