- UID
- 16428
- 主题
新手上路
- 金钱
-
- 威望
-
- 贡献
-
- 日志
- 好友
- 帖子
- 主题
- 听众
- 收听
- 性别
- 保密
|
JBuilder2005实战JSP之错误处理(4) ( V% V4 L! r6 l2 Q3 l) A9 H
_& ?! m+ e' Z# z$ y; t7 H
错误处理页面error.jsp4 D7 ^3 r* A2 R. W3 [: N
' @% D: O+ ~8 q+ w6 B. X0 t4 _ Web应用程序一般都有一个或多个统一的错误处理JSP页面,以便在功能性的JSP页面发生错误时,能以一种友好的形式向用户反馈。友好而统一的错误页面是Web展现层一个无可忽略的方面。
# X3 T; _( c6 l0 I3 K" L/ q6 G) J- d$ _1 {% d* A
下面,我们创建错误处理error.jsp文件,其代码如下所示:- ?+ b/ a/ u& F7 Y; a# J, e
* D" m, P: |, a1 x
代码清单 11 error.jsp错误处理JSP页面) o! R( I# ]' g$ W
. t- L. }, V* {1 e) Y 1. <%@page contentType="text/html; charset=GBK" isErrorPage="true" %> 3 \1 f; W/ V- v/ O1 l/ I
, J% b4 O5 i! I4 l8 \# P& V0 X
7 i7 s2 U: |7 K$ v) D 2. <html> z, \& V% C, o1 O2 k* x, C. V$ C
- H9 X4 q$ G- O, G8 F V, s 3. <head>; M; ^7 d' Y; P* Z0 y
. X. ~# g5 g5 i; w0 O/ z 4. <title>error</title>
4 u+ f' x) p- d/ ~ l6 O
& @" b) W% m+ ~ 5. </head>' S; d0 V, @ \5 _6 W& h D
M0 W- x9 p. A4 d
6. <body bgcolor="#ffffff">
% g7 ]* x: C, @! }9 \
) @8 a5 \9 Y1 G/ N 7. 抱歉,系统发生异常,点击<a href="login.jsp">这儿</a>返回首页, {% u; R9 e; C1 V5 m. N
( S4 e, P1 I2 a6 q% L- X 8. </body>( n5 S' \! o% i4 ]+ m
; D( e, c9 w8 p8 Y8 N+ F+ F
9. </html>
, G% F+ `0 h: ~5 O; v
3 `" f# O, A2 N6 d8 B5 K* C/ _* @ _' Y0 M
; i5 }! i r1 R* ` 错误处理JSP页面的page指令标签中的isErrorPage属性应该设置为true,如第1行所示,这样JSP页面中就可以访问exception隐含对象了。在第7行,我们用一种"优雅"的方式向用户报告程序错误并提供一个返回到登录页面的链接。4 i! }" q' d4 a6 P, Q( K' |+ b5 r" ]
& p$ _; v3 t E. v3 d2 q; ]: Y/ n# |
现在,我们回过头去,通过<%@ page errorPage="错误处理JSP"%>将error.jsp指定为switch.jsp和login.jsp的错误处理页面。
7 v4 P9 N. d% a' Z1 v: _; C* d) _: p; W
为switch.jsp页面添加错误处理页面后,其代码如下:
7 v) q" [9 p- S4 w {$ t3 v, \ S. M
代码清单 12 switch.jsp添加错误处理Jsp页面
{% R6 a$ ?7 K S9 Z' F$ Q' Q% p7 L6 A* t7 I7 Y
1. <%@page contentType="text/html; charset=GBK" errorPage="error.jsp"%> ! [% l9 F9 x. J. k1 K0 b' p. b- J
]! I {6 Q+ H' p( s" d* \/ N8 P
/ { ~, ~' B- _9 e/ `
2. <%@page import="bookstore.*"%>
# ?- S8 |- \# [ V: T3 F
6 [& F6 K* t, y/ D! c+ z$ U3 D6 S 3. <%@page import="java.sql.*"%>
3 |0 D7 C0 M, D {( l( Z) J8 k. Y2 g7 B2 Q. C, W! L( {; x) t
4. ,www.jnkfp12.com,www.njkfp12.com,www.qdkfp12.com
* T: [2 v1 X0 [7 G l& t$ \+ l
2 G8 a# u- h: z+ k% M, h! }$ d3 C
|# ?. B) |0 F
为login.jsp页面添加错误处理JSP页面后,其代码如下:5 h- l& j$ w G" U6 H( K
6 r0 H% R8 C5 J6 d! |
代码清单 13 login.jsp添加错误处理页面
# H& ]! P s8 @- s: C" @8 k. q1 K6 ~. x/ o2 h% J0 M6 \2 W" {8 k
1. <%@page contentType="text/html; charset=GBK" errorPage="error.jsp"%>
+ t4 c9 ?5 @) b( H
4 j( ]. T Q! `/ f3 B: P: I' \! P* _8 f b
2. <%@page errorPage="error_error.jsp"%>
' }# [" B u# b; ^" t+ D- w% |
+ u% ?# z2 G4 R L4 n9 i 3. ,www.shkfp12.com,www.sykfp12.com,www.szkfp12.com
! S4 i5 J8 Y/ n5 a9 T" n5 C % L! p- N! t* G; i8 F& S1 h
9 L+ R; h# @: v7 q. \' s
9 Y+ A. W2 s' a4 v
这样,当switch.jsp的SQL查询语句不正确引发SQLException异常时,那个晦涩难懂的异常迹信息错误页面不见了,取而代之的是下面这个友好的报错页面:
* Y6 H! T, y) }' Q' O- Z$ H$ K3 F; F* M% l, l* w9 @: H8 e8 s
/ `, T: n. c! T+ `7 p% j
7 k; f% F: d2 p( t. @! |) A
: p! _0 I. G3 C 图 15 友好的错误处理页面
1 y# | A8 T H
7 }# G6 D7 g. ~* T6 W9 I$ w6 I9 _
! t$ W. O M" I; r
登录失败fail.jsp
8 r: X9 }! F" [! x; t/ _5 P5 M8 d2 d# B/ G0 ~* ]8 N& j, a4 t5 H
当用户提供不正确的密码时,switch.jsp将转向fail.jsp页面,同样你可以通过JSP向导创建fail.jsp页面,fail.jsp的代码如下:
. W' B7 B( x0 h+ t" ^
5 b9 H8 T% z, n 代码清单 14 fail.jsp 登录失败页面3 B$ I) s0 q! H8 U9 N( Y* J% `4 }+ Y" {; L
# Z/ ~9 Q+ |; L! R8 k4 d3 Y
1. <%@ page contentType="text/html; charset=GBK" errorPage="error.jsp" %>
& Z. U: |4 ~3 U2 u
0 {+ l' T+ u1 v# K9 D8 {$ k* y5 p1 y1 x5 n$ n) i
2. <html>
3 S! A: n- {" q7 e% h" c& v5 f' B
3. <head>, L/ R6 v3 t# m* c
' a4 d, r: w3 Y6 }
4. <title>) M" n( Y6 z/ ~9 A, x
$ M/ y& J9 u/ V1 Z @9 r) O( | 5. fail
" ]8 l; L5 q q. P% s, a' m- N) V* s4 B7 ^5 f' Z5 u5 R
6. </title>
6 C) O2 }3 y2 R2 P( _+ d r* d' t. Y; K# G4 h
7. </head>3 ~; ^ k8 u: N
$ K/ p7 d% {, M6 @* | 8. <body bgcolor="#ffffff">1 p. o5 i/ m& \! G
. \; o5 k2 K7 ~, C! @/ q# f0 E 9. 你输入的密码不正确,点击<a href="login.jsp">这儿</a>返回登录页面。/ J5 |/ \8 }+ G6 L
! ^% N) f1 r7 D7 g, D; A$ f
10. </body>, \7 Z5 C& \" Q5 L
/ @- b7 ?2 @9 I2 z 11. </html>, i/ P4 k5 p2 I! A. m Y5 f
8 Q1 O0 l/ w+ V# z/ H1 I
8 \" B' q) r& n1 s5 c& J, l |
|