发新话题
打印

JSP与JavaBean的联系

JSP与JavaBean的联系

虽然你可以在小型指令文件里放入一大块的程序代码,但是大多数的java程序代码是属于可以重复使用的组件,称为javabean。javabean就跟activex控件一样:它们提供已知的功能,并且是为了可随时重复使用的目的而设计的。 2 R7 g, r0 q; k& `7 ~7 d- V; W% K
6 f. {) S( {/ E5 N; U7 o$ N
   javabean的价值在于它可以经由一组特性来使用,而这些特性则提供对javabean设定的存取。以人来作范例,此人就是javabean,而他的姓名,社会福利安全号码,以及住址可以是特性。对于jsp网站,基本上你是将'javabean'动态的连接到你的网站。
  d9 A  D( c- ^
  G, i* u% r( V4 n6 ?' [   假设javabean是在建立网站之前建好的,你要做的第一件事是告诉jsp网页它所需要使用javabean.这工作可以用<jsp:usebean>卷标来完成:<jsp:usebean id="localname" class="com.jguru.person" scope="application" />. ' q1 \! j/ `, U6 r1 A* D. k

) f/ k8 m, z% K   <jsp:usebean>卷标需要你以id 属性来辨识豆子.在这里,你提供一个名称让jsp网页来辨识豆子,除了id 属性之外,你也必须告诉网页要到哪里去找这个豆子,或者是它的java类别名称。类别属性提供如何在各式方法之中找到它,最后一个需要的组件是scope 属性.有了范围属性的帮助,你可以告诉豆子,要它为单一网页(预设)[scope="page"];为一个被请求的网页[scope="request"];为通话期[scope="session"];或为整个应用程序[scope="application"]来维护它自己的信息.对于通话期范围,你可以很容易的维护jsp网页里的项目,例如购物车。
3 ]  }9 d, z1 ~+ f& q1 m$ g( l; B+ n4 A8 s% |- s
   一但你宣告了javabean之后,你就可以存取它的特性来订定它。要取得一特性的值,使用<jsp:getproperty>卷标。有了<jsp:getproperty>卷标,你可以指定要使用的豆子名称(从usebean的id字段),以及你要取得值的特性。接着,真正的值就会放在输出里:<jsp:getproperty id="localname" property="name" />.
+ F# G% u9 \/ U+ @
- a# I: i/ }) _$ i( P' M' r   要更改javabean的特性,你需要使用<jsp:setproperty>卷标.对这个卷标,你也需要辨认豆子以及要修正的特性,除此之外,你还需要提供新值.如果命名正确,这些可以直接经由规定的格式取得:<jsp:setproperty id="localname" property="*" />;  ' A* D, @3 p! Z6 a
0 A' r& U& R$ N$ n3 m7 q
   要从一参数取得,你必须直接命名此特性以及参数: <jsp:setproperty id="localname" property="address" param="parametername" />; 
) o- P4 H9 L* ^
4 g. P6 T% a. P2 d$ U% w1 z$ y   或是直接以名称与值来设定: <jsp:setproperty id="localname" property="serialnumber" value="string" /> or <jsp:setproperty id="localname" property="serialnumber" value= <%= expression %> />.
  _1 |( S# h) Z" ^  \2 V: v; ?* M: Z5 T8 y
   有关javabean的最后一点:要让网络服务器可以找到javabean,你需要将它们的类别档案放在特别位置。对jswdk而言,最简单的地方是在安装目录里的类别目录,例如 \jswdk-1.0.1\classes.

补充

  在我们继续描述如何编写一个jsp调用JavaBean前,我们先来讨论一下jsp提供的使用javabean的三个tags.
# j! l2 }- f' ~" M) r; I
# k* X. d, X5 J4 J
1 J3 ?6 [. l+ i3 i3 E  l$ h3 y3 c) \! {   i. <jsp:useBean> : `4 d+ P& y; W* t5 x9 O% h

" d& ~+ n8 Q7 H( Q8 P& }  这个标记被用于声明和实例化javabean类.语法如下:
7 O0 N/ L, j1 s$ c& {  t" I/ X( @
- k3 z3 }, D/ D3 s* U+ Q. `
  <jsp:useBean
4 s5 H! n1 U5 g% T5 S  id="object-name"" H  N1 t8 y4 k. W% S& p* a
  scope="page | request | session | application"
$ P+ J" j( U5 I  type="type-of-object"
! K( J+ t6 @: t/ N  class="fully-qualified-classname"
1 V+ c, I7 z1 v& W  beanName="fully-qualified-beanName"
. W5 a. ]6 b9 F' u7 O$ t  />
$ r5 [7 z) r# k) E+ m; f8 m# i) v& N, G9 e3 I
# B5 _* n: J( ~( K
  让我们看看这些 属性:! k/ V3 ?- X5 u% j+ q/ ?  B
( I- C$ Y& F- Y4 `
  id --对象的名字,比如:String name = null;在这句代码中,name就是id;
0 _0 h5 f; W4 g% {9 {
( c6 A( _# ~1 x8 P# X7 o  scope--一个可选择的属性,当你的javabean 对象将被破坏时,默认的是page,他意味着每个页面将创建一个新的javabean;
1 _1 \$ J8 E+ q* f2 t4 q( [
$ N" D9 Y  L8 y8 w) V: Y  type---对象的类型,可以是相同的类或父类或者是该类要执行的接口,他的参数是可选.如:String name = "Faisal Khan";中的String就是我们所谈的./ D: `3 J3 H1 I% S0 T$ v
/ M: c) P# v2 A, _: X4 ?
  class --一个完全有资格的类如ate d = new java.util.Date();中java.util.Date就是我们所说的.9 N' h( h) \* J% D: s6 c
  beanName--也是一个完全有资格(fully qualified )的类;
! A; B6 }3 S* X) L% n- ?" K  x
2 ~: I1 H; m% J& F1 L/ B   ii. <jsp:setProperty>
2 o: Y+ {$ o1 [; r( c
3 Z& a$ T! j: ?) s% t7 A0 H  这个标记用于设计javabean的值,语法如下:, o; R2 N5 S1 P( x$ E( }6 H0 k$ n
) U& ~8 ^3 |; _  z+ n
  <jsp:setProperty% O" T* b; o6 o4 O% n
  name="id-of-the-JavaBean"( A' [) n2 V, r1 M/ H+ H
  property="name-of-property"! f1 ?  @% n; _- ~8 j
  param="name-of-request-parameter-to-use"6 q1 r; f' G% `: i7 }! t0 P2 U
  value="new-value-of-this-property"; ]: W4 a+ E9 z- |$ p- U- a3 p7 T) ]
  /> " G7 z! E. R2 {& o( P

! [; f/ f6 o8 c; D8 d& |6 H  起属性为:
) ?# X- ?, B! {) \- S6 v  name--你设置的<jsp:useBean>的'id'
- l) T. k& C$ a2 v  property --你想设置 的property的名字! @1 l: I# H& s( R& A7 I
  param--你本property中要请求的param的名字+ z3 F6 s5 S& v) k4 a, x3 o% [* @
  value ---在本property中你想设置的的新值& g# D5 w! g' @7 q( ?+ {4 q

+ D$ l+ a$ v) P- c   iii. <jsp:getProperty>
$ {5 P) S& ^, v6 N0 u7 ^
* k; a, Z, S, c4 }+ B% V  这个tag用于返回一个特定的property从一个特定的javabean中,语法如下:
7 y) n7 L3 K1 ~0 x$ w' n8 Q/ M. `
# d$ v$ U, t& Q
: k6 e1 `0 \% k5 m3 P, R! \) `8 Y   <jsp:getProperty
. P- ~- P: p( w$ c  name="name-of-the-object"
" E: ?+ ]3 Q$ U: d. @  property="name-of-property"
/ t$ y0 i/ A8 R2 d4 d( ^  e$ k  /> . R6 v0 Z+ Q( e

8 I7 m! I! G9 ?/ ?5 k! m( o& n  属性:name--<jsp:useBean>中设置的'id'
6 [, a) Z4 L3 h6 w  property--你想找回的property的名字2 B  Z* M6 ]* g- [  G3 q
  好了,我们现在完成了学习操作javabean的jsp tags,再让我们花点时间来学习什么是scope属性:/ \% {( _0 k& d% x9 D4 \6 A) Z
  每个javabean类对象或者其他的类对象都有一个scope(范围),他的意思是这个对象在存储器中保留多长的时间,这里有四个scopes:
3 A1 p' N( B3 K9 v  page--他意味桌一个新的对象将在每个页面级创建或破坏,当你没有明确的赋予其他值时,他是<jsp:useBean>默认.
发新话题
查看积分策略说明

快速回复主题

选项

[完成后可按 Ctrl+Enter 发布] 预览帖子 恢复数据 清空内容