Google
      
 12 12
发新话题
打印

[JS教程]JSP由浅入深

JSP由浅入深(11)—— 标记库

 JSP 1.1提出了一种扩展的JSP标志的方法,这种方法命名为“标志库”。这些库允许另外的一些类似于jsp:include 或者jsp:forward的标志,但是它们不是以jsp:为前缀的并且还附件一些特性。4 e) O: w7 X7 @
' t, l# W+ t4 A' |# C8 W* V' [
  为了介绍标志库,在本教程中我们使用Blazix标志库作为例子。这个标志库只能用在Blazix服务器中,这个服务器你可以免费下载。
* }$ J$ ~1 t: M4 n* F( W
6 K- [+ E0 C: k& A$ D) {9 W每一个标志库都有它自己的标志库特殊的文档。为了使用标志库,你可以使用"taglib" directive来指出标志库“description”处在什么地方。对于Blazix标志库而言,directive如下:
" [6 G' l9 K- T. _! ^$ l1 u. F8 H0 U7 S% a  Y
<%@ taglib prefix="blx" uri="/blx.tld" %>+ P( [& w9 p: ~1 q3 }% f% j
6 {* V0 j. l9 l/ N0 ]& h
上面者句中“uri”就是指出了标志库描述所在的地方。标志库的前缀是不同的。这个指令的意思是说我们可以使用blx:来使用库中的标志。Blazix标志库提供了一个blx:getProperty标志。这个标志可以允许用户编辑表单数据。现在,在GetName.jsp文件中,我们增加一个jsp:useBean并且将表单放置在blx:getProperty中:( e3 Y& r. W/ f! P# w2 S% Q4 |
0 z) k; b% Q! \+ ^) W
<%@ taglib prefix="blx" uri="/blx.tld" %>
/ L6 ]1 W' g5 d+ `1 ?& f! W$ t" K$ E# d/ g  {$ s9 }2 j  G% N
<jsp:useBean id="user" class="UserData" scope="session"/>" N- {; D9 y/ i5 _

5 ^+ ]. c) q) x- u* z0 n<HTML>
9 }6 A, L; ]2 m" P- c& d& o! `* l; J$ p" G3 d7 S
<BODY>! x( t" B' @4 m/ c2 q  V: q

5 K0 j0 E* k6 F* G  ?+ q7 ~6 y- F<blx:getProperty name="user" property="*">
8 U0 W. @, }; \7 V0 u; h5 `) Q; f& ]* }
<FORM METHOD=POST ACTION="SaveName.jsp">
/ f% W* w- V. i& I0 t& @% f5 |. {; T1 J' A$ G3 O
What's your name? <INPUT TYPE=TEXT NAME=username SIZE=20><BR>
+ e: ^5 w1 i0 ~1 s( G* u' Z7 e
+ j  O! w% I1 n/ h& yWhat's your e-mail address? <INPUT TYPE=TEXT NAME=email SIZE=20><BR>
1 s7 c) c' X, M4 B: T" M8 @. e$ z: D/ ]/ _6 d- `% g' h
What's your age? <INPUT TYPE=TEXT NAME=age SIZE=4>0 J! k6 F) |& {2 G5 f2 }2 |

1 f" }+ t% Y; }& i% r+ z<P><INPUT TYPE=SUBMIT>3 a' U: O1 ^/ g, T! L
+ ^: T& c9 {# I2 P; f) c& T$ Q
</FORM>. d0 b# M& G% o9 o( k$ k

: r* `! |1 q7 A% `+ U</blx:getProperty>
& p) i+ Y& v2 C8 L* Y/ n0 x( }. t% m+ o; d8 O+ ~! T
</BODY>$ [) m7 f# _% ^

- o; o2 `3 U4 c# ?</HTML>
4 |& D3 V# h! B3 R4 V+ S# t3 ?0 P- \" t  A/ X/ r
从上面的代码中我们可以发现blx:getProperty不是以/>结尾的,而是用</blx:getProperty>来结尾。这条语句将所有的表单输入区域输入到blx:getProperty中,这样它们就可以被标志库正确地修改。
$ E. P. H" h6 |' _
" t0 @8 G9 `+ D! f- F接着建立一个从GetName.jsp到NextPage.jsp的连接,你将发现bean的数据自动显示在输入区域中。所以现在用户可以编辑数据了。

风往尘香花已尽,日晚倦梳头。物是人非事事休,欲语泪先流。
闻说双溪春尚好,也拟泛轻舟。只恐双溪舴艋舟,载不动,许多愁。

TOP

JSP由浅入深(12)—— 表单编辑

  比如来自Blazix服务器的标志库在你的系统环境中不能使用,那么不使用标志库来实现相似的功能呢?本教程就是为这个问题而提出的。这个问题是可以解决的,只是代码要长一点。主要地,你必须亲自编辑HTML标志,然后将它设置缺省值。从下面的例子的例子中我们可以学到怎样修改GetName.jsp以提供类似于blx:getProperty的特性,但是我们只能手工地编辑HTML标志:  w2 m* ^3 l2 h0 Q& K# T
5 ~0 @# l4 f; U+ _& ^% u- z
<jsp:useBean id="user" class="UserData" scope="session"/>
& X5 F3 H: w* b& ~+ V* ?5 r- k" I1 K1 x0 D! v
<HTML>* e1 e* m. q4 @2 ]

) t4 D1 p; B' r8 P2 k<BODY>: e2 C; S% D5 J% f
" h: ^# ^! f/ B6 H
<FORM METHOD=POST ACTION="SaveName.jsp">
; T- c& d* f; {$ h8 }
! [4 S+ f* ^1 ~$ ~7 _% \, UWhat's your name? <INPUT TYPE=TEXT NAME=username
$ G# q0 O- S  \( a* f2 |8 i6 T! r1 ^% R4 T6 r
SIZE=20 VALUE="<%= user.getUsername() %>"><BR>5 i5 O! T& n' N7 u  U1 N
) y+ K% m/ [; I7 C, L# h0 `
What's your e-mail address? <INPUT TYPE=TEXT# l( i( d1 l. Y6 V/ n
: y  `. [2 S1 o, ~
NAME=email SIZE=20( A3 t( k/ J! A. c
8 ]8 i/ i# T9 U4 n* i1 [
VALUE="<%= user.getEmail() %>"><BR>' ~' }( k' N9 v) B

8 M/ ~6 W  J6 ~What's your age? <INPUT TYPE=TEXT NAME=age
' a! f+ A7 n6 J3 K/ i3 l+ O& `% Z/ x- T* q
SIZE=4 VALUE=<%= user.getAge() %>>/ |# C" v% m! A0 v4 A3 w
/ O1 Y4 V2 e" i3 z0 j2 \0 B# ~- w
<P><INPUT TYPE=SUBMIT>* @: E  c0 C' y

# g( @4 E3 t+ X5 }- Y8 r</FORM># f' H, f, Y; l; V6 B1 ~+ d, G
7 k3 H* c3 H( U
</BODY>  M7 w8 D* `) o$ R4 ^4 ^
7 U- H" b: X1 W+ R. s% u
</HTML>
: j8 T8 p+ J$ A! H4 y2 G+ T- v5 }9 U, H' ^# e8 @- D1 _
如上面的代码所示,它只简单地在INPUT标志上增加一个“VALUE”区域,并且用一个表达是初始化这个区域。
2 ~6 n9 ]- d. M0 e2 I2 l$ i! B3 s
为了处理在输入过程中的异常错误,我们可以在bean中使用“String”区域并且将它转换为目标数据类型就可实现。所以这样也可以处理异常错误。
5 l+ R% l/ Y1 W5 U
+ B4 m& T9 f0 Q' r, Y作为课后练习,我们可以将前面教程中的例子改成不用Blazix标志库。
0 R6 e8 X. v% O4 [1 V- S- g# a8 S+ s1 N  N' h# M  R4 G6 R

; O. {- ~1 r/ x至此,本“JSP由浅入深”系列教程到此全部结束,希望对你有帮助。

风往尘香花已尽,日晚倦梳头。物是人非事事休,欲语泪先流。
闻说双溪春尚好,也拟泛轻舟。只恐双溪舴艋舟,载不动,许多愁。

TOP

 12 12
发新话题