- UID
- 16428
- 主题
新手上路
- 金钱
-
- 威望
-
- 贡献
-
- 日志
- 好友
- 帖子
- 主题
- 听众
- 收听
- 性别
- 保密
|
JBuilder2005实战JSP之错误处理(4) " y! U4 W. b3 I4 z, r) f6 x- V7 A
, K" H' M% h2 f( l8 o2 `* p
错误处理页面error.jsp* [5 m- ^. d' X' Z$ j- [; R8 K+ M
7 z$ B r ~/ x" O0 w Web应用程序一般都有一个或多个统一的错误处理JSP页面,以便在功能性的JSP页面发生错误时,能以一种友好的形式向用户反馈。友好而统一的错误页面是Web展现层一个无可忽略的方面。
! E R) a5 y; D" c) V9 }2 ]
) L' S" l, N0 U. ^9 w+ } 下面,我们创建错误处理error.jsp文件,其代码如下所示:
* |6 E- w, v2 U4 x, n9 E
0 @( c( R6 X [ 代码清单 11 error.jsp错误处理JSP页面
/ c% W; g/ H" D) C5 P) U5 @3 J: j V6 `# G" h2 a+ l
1. <%@page contentType="text/html; charset=GBK" isErrorPage="true" %>
7 ?; R* u0 Z: Y& v
& m6 q5 o, o: R: V- t+ ?2 ~ F
0 \ Q0 W& w. w: x 2. <html>. i! D, `& q* L, x0 ]8 H
. a0 J6 c2 C- U& V 3. <head>
, X" Q$ S' ^' S# J6 O: X- l
+ c6 v. _3 O' _* H. P9 l2 f) y 4. <title>error</title>- ?* t* N' t a, u0 ?, y' J+ W
; l4 f+ ^: z; T 5. </head>% N& y' V& t2 W' @
. ^ P- d) y4 e9 B4 K: ?
6. <body bgcolor="#ffffff">* Z) ]( |& R. k" s2 N% _. |
. O- k8 I3 c' c6 a, S
7. 抱歉,系统发生异常,点击<a href="login.jsp">这儿</a>返回首页: W) K) q$ z) d1 s$ o; n. M
6 q2 b3 L0 Y% i i# r2 n! G 8. </body>+ K3 P6 g' F5 m" F
4 o2 B; V8 U3 V. r. \; f$ r 9. </html>. ]/ z; T- D$ R: q) B4 S; A
, n) A, X+ V( P2 \3 c
/ {5 v# B- }7 j0 M& k
6 W1 C" B, Y( I w8 \0 F0 o 错误处理JSP页面的page指令标签中的isErrorPage属性应该设置为true,如第1行所示,这样JSP页面中就可以访问exception隐含对象了。在第7行,我们用一种"优雅"的方式向用户报告程序错误并提供一个返回到登录页面的链接。! H+ r1 T) S5 w9 b
4 _3 U# m+ p' q) W. t2 V+ ^ 现在,我们回过头去,通过<%@ page errorPage="错误处理JSP"%>将error.jsp指定为switch.jsp和login.jsp的错误处理页面。* u+ D# `# f& H' K9 V* c
: ^; a+ o9 Q3 l; y
为switch.jsp页面添加错误处理页面后,其代码如下:; W! I, H1 ~$ e* V/ |* F
+ B% w6 U4 Q0 V/ \( r 代码清单 12 switch.jsp添加错误处理Jsp页面
1 @9 c+ w0 Y) e0 {" Z) s% e9 Z. p
1. <%@page contentType="text/html; charset=GBK" errorPage="error.jsp"%> G ~! J3 @1 g" s. w
3 Y/ o" m6 K s1 c6 ~4 R) Q7 z
5 x9 G! g( v0 G) ^: ^4 Q
2. <%@page import="bookstore.*"%>
h7 W2 K- P/ N" {2 w! ?% B9 T; A4 e& w
3. <%@page import="java.sql.*"%>0 T* M0 r" A2 u. K2 w; u s8 u
- ]- @- h: t7 w. W
4. ,www.jnkfp12.com,www.njkfp12.com,www.qdkfp12.com7 b$ w3 W7 Q! P: i1 |8 c
* f- V) {5 ?) w; b
1 x7 d4 s$ X+ P% H. e
+ a" P# |2 X4 C) O* l: R 为login.jsp页面添加错误处理JSP页面后,其代码如下:+ ~, K d: A$ @$ X+ T8 p8 a- A
5 |" \5 d! |. L% L r$ e
代码清单 13 login.jsp添加错误处理页面
* U1 m4 y( Q; O( J x+ e- {+ c
+ R7 H$ \4 u; |$ w/ d* B6 q 1. <%@page contentType="text/html; charset=GBK" errorPage="error.jsp"%>
" o; \- W) b. e0 a
8 N& l% f- w$ P: T- R0 `; F3 K- ?# h* `
2. <%@page errorPage="error_error.jsp"%>& ~% v2 O, |! Y2 a W+ O8 y7 W, {& s
* o: {( U& A9 Y# b5 z
3. ,www.shkfp12.com,www.sykfp12.com,www.szkfp12.com+ x- ~' t Q1 Z& U2 r/ l
3 y9 F' P: s7 h
# d$ j9 u& Z! y3 x3 h5 Q# t
4 k) T: U& o! S6 }* J) h W" f 这样,当switch.jsp的SQL查询语句不正确引发SQLException异常时,那个晦涩难懂的异常迹信息错误页面不见了,取而代之的是下面这个友好的报错页面:
" ^4 B9 a% p! }3 f. |( u/ l9 K2 u8 z H+ |# p; [3 b P
# S/ P6 ]+ ~0 y0 O0 P- q: V! B
( O& |* ~0 z2 d
( Y7 J* F2 u9 t' c1 G W2 K& k
图 15 友好的错误处理页面
* {5 X. x6 Y/ L 5 r* K4 g; D& `( L8 N: O* y
" |1 V; _4 O8 _4 Y: T9 a) p) i. S" a, r7 `! k
登录失败fail.jsp
5 y/ W; H' w, I4 [# I0 r2 {7 L" n
W4 c" @4 `* I& A" r 当用户提供不正确的密码时,switch.jsp将转向fail.jsp页面,同样你可以通过JSP向导创建fail.jsp页面,fail.jsp的代码如下:# ~" u2 N0 P! F$ s1 p; c
' ]2 O7 c8 a8 ?% \; P) O/ ~% g0 G
代码清单 14 fail.jsp 登录失败页面
/ Z5 Q) s% V. e5 }/ c0 m! l- B( H
8 W& q9 v# Z& i$ Z 1. <%@ page contentType="text/html; charset=GBK" errorPage="error.jsp" %>
1 }8 D$ x" F& h& x! T
7 a0 f+ Z$ P9 Q; g# R$ q% t* C! H# l m
2. <html>
' E6 V2 {$ u( Y* h0 I
' s2 S& ^7 S8 v' m) m) E8 ]2 H 3. <head>$ z6 W- R7 N. n1 p$ N2 l
3 x. ]- D) K" J1 Z e; _" c& ~& s
4. <title>9 c F3 ^; c3 k# b% x* p
$ m t9 A9 _, d* }
5. fail
0 w# }! _8 q' Q- E9 t) Y* [6 n, I! B/ k
6. </title>
8 x) [# ?. E- k- M
% T, Q- D5 o3 E% [1 }0 ]- S( Y 7. </head>' i0 b: Y+ ?# E0 g. l1 d0 }0 i8 X
" s" c% Y0 X* v0 A+ c/ A" |
8. <body bgcolor="#ffffff">( y) G+ J$ N0 k' z
! |- ?' L( U2 ^3 a s
9. 你输入的密码不正确,点击<a href="login.jsp">这儿</a>返回登录页面。; ^( D5 b! o7 q3 i! t7 V( o
9 h m* \) W% g8 H+ l; i1 _
10. </body>2 P2 _! ^5 |% l8 P) w) F; Z
: c( {+ Q! M Z
11. </html>, L2 ~, q% k& n/ J5 O
+ J% x1 T* v. T9 ~' j R2 S( x
0 a7 Q. U4 K" F3 D7 z
|
|