- UID
- 16428
- 主题
新手上路
- 金钱
-
- 威望
-
- 贡献
-
- 日志
- 好友
- 帖子
- 主题
- 听众
- 收听
- 性别
- 保密
|
JBuilder2005实战JSP之错误处理(4) : O0 M8 Y# @" X! M5 w
& m; h4 ?2 h: K4 \* Y- A4 d 错误处理页面error.jsp/ D$ W: p& U/ s/ r) s
) g8 |- m! q! P Web应用程序一般都有一个或多个统一的错误处理JSP页面,以便在功能性的JSP页面发生错误时,能以一种友好的形式向用户反馈。友好而统一的错误页面是Web展现层一个无可忽略的方面。
( ]) I/ H" o7 J: u0 N5 Y2 E0 ^1 V8 U$ k
下面,我们创建错误处理error.jsp文件,其代码如下所示:: o6 \, C& |2 k5 P9 v6 @
- Z9 t0 z7 o3 C% C& }
代码清单 11 error.jsp错误处理JSP页面, l. I! q/ b* \
+ y6 f0 L _, }) g$ q
1. <%@page contentType="text/html; charset=GBK" isErrorPage="true" %> ) P5 n7 _( i& n& j) a% w0 j( i
$ w8 B% o* u+ o
8 a3 r: l3 d4 h7 F; C 2. <html>. K2 F! V$ H5 l/ u; s3 @
8 N. h; v& C, ?# K6 E ]6 g
3. <head>
4 X2 p! I/ t5 J. t$ q2 N+ M( E9 e+ P! r
' r, h9 Y$ G5 i 4. <title>error</title>* k. k$ C- R2 E- o0 I* j
% O0 M5 G( G8 ^- e4 z/ { 5. </head>
/ ^% t4 [9 _* Z* V- q1 W* O
: {3 G' Q* @9 W0 o i 6. <body bgcolor="#ffffff">
, l5 R/ ^% h! v0 H9 o b7 k6 B4 b+ V: q' N9 u) x w+ O
7. 抱歉,系统发生异常,点击<a href="login.jsp">这儿</a>返回首页
+ e/ s, q# N6 [$ r0 l2 _ U0 j4 ?" S+ |* X9 H, M7 a5 C
8. </body>
' s/ o, H& |3 S7 Q# Z5 X2 }4 K/ E
5 q- h2 z5 i Y W# }% ? 9. </html>. k$ x0 k/ U; I, d
7 r$ u* M0 l3 v- [0 t9 w
/ z# t" n+ p* K! b9 y1 d5 T
: P, b$ ]- C5 u' X* g; s( L- J: G
错误处理JSP页面的page指令标签中的isErrorPage属性应该设置为true,如第1行所示,这样JSP页面中就可以访问exception隐含对象了。在第7行,我们用一种"优雅"的方式向用户报告程序错误并提供一个返回到登录页面的链接。$ t1 x8 U2 m+ [& e4 v) F
9 a& {1 G1 h: H% I 现在,我们回过头去,通过<%@ page errorPage="错误处理JSP"%>将error.jsp指定为switch.jsp和login.jsp的错误处理页面。
* L' d% w( u# c3 i
0 ]/ b$ g& T: k' c+ ?. ]# F/ H* P 为switch.jsp页面添加错误处理页面后,其代码如下:
" q# r0 k. d# J) C( P5 l g4 R' i+ Q# y C4 ^+ B5 P }# {
代码清单 12 switch.jsp添加错误处理Jsp页面: R6 ~9 O( l- G+ T$ @3 l! Y
) q) q# O. B3 v. \* b; ^. m. V
1. <%@page contentType="text/html; charset=GBK" errorPage="error.jsp"%>
* t! ~4 s2 s% v# T' c7 u & u6 i' d$ u0 b8 w
0 M, ?" T; J4 w 2. <%@page import="bookstore.*"%>! F$ l. ^8 y1 `7 e4 D) I- X2 C
* ]. P' O, X- F6 z
3. <%@page import="java.sql.*"%>
9 A( e6 z0 n) E# d; p
5 g3 [% V5 V& Y; c2 d7 b4 W* S 4. ,www.jnkfp12.com,www.njkfp12.com,www.qdkfp12.com9 H* Y: O1 C+ Y3 {
6 W A' [ \! N: i% B4 N( h. c& Y4 K9 C$ Z
3 d% J9 x; g% N2 n$ R o1 a4 P
为login.jsp页面添加错误处理JSP页面后,其代码如下:$ p& f1 A0 f6 ]' j; p; p+ F! F+ T
1 G# U0 z$ Z5 S1 B. K! l' W3 O 代码清单 13 login.jsp添加错误处理页面6 H( b# F( C1 ^: S: K* Y; a- _
3 n/ W( R' ?# C; h, E4 I0 C
1. <%@page contentType="text/html; charset=GBK" errorPage="error.jsp"%> , i- A9 t2 x9 ^8 R! @9 w1 k' Y* K/ D
& G6 m' b4 O3 l2 X$ d! Z1 W4 l) W1 c0 K- Y$ D
2. <%@page errorPage="error_error.jsp"%>
+ `: i* }: X8 x& m# \% ?2 o; @& G+ J
3. ,www.shkfp12.com,www.sykfp12.com,www.szkfp12.com
0 |8 J0 V6 {, y7 n' D 5 b& @. G3 D0 u e6 j/ H
* E& G* M4 x% L; M/ {# m2 N3 C2 `0 \
这样,当switch.jsp的SQL查询语句不正确引发SQLException异常时,那个晦涩难懂的异常迹信息错误页面不见了,取而代之的是下面这个友好的报错页面:8 `% W. H: z3 K
$ O) R( }- a3 e! d
D9 H2 o5 V9 q9 j1 J/ v3 p# D( k& a / T% e Q, n; o3 B
4 m+ }/ v0 g" o% F# O- J; q 图 15 友好的错误处理页面
: E. q* X6 {) c8 J# g5 B 7 A6 }# w) p6 x( M! |% z q
4 f$ I0 |6 n2 J2 e
+ M% a/ y) T" ~ 登录失败fail.jsp S8 R3 X3 S5 W% s/ F* {/ ]) ?% W
' _: y$ n( ~; J: C1 v2 \
当用户提供不正确的密码时,switch.jsp将转向fail.jsp页面,同样你可以通过JSP向导创建fail.jsp页面,fail.jsp的代码如下:
g! B* |. r( _) U, u4 a. S3 k$ G, X0 V7 x, u/ G2 f l
代码清单 14 fail.jsp 登录失败页面
5 D) s' v' |" ], Y) r |/ Q2 A6 \$ k9 p4 q
1. <%@ page contentType="text/html; charset=GBK" errorPage="error.jsp" %> $ }% g. X" _( p1 w0 r3 N% w
/ U$ b# e+ f/ n/ u* G
: ?: d) z8 {8 E N8 [, C 2. <html>8 y7 s- P6 g' o; e) Z
* U. ~) }; R7 j2 W! _ 3. <head>
; T# u6 a% v! b& f' S
4 s. w; G% `/ g, S# S% P 4. <title>
' Q4 W: r! s) m7 g- f- H8 ]9 G0 ?, k0 F5 ]
5. fail
, r5 V9 C+ E& D0 F/ U9 P5 v! U; D Z- p0 ?- ?
6. </title>
( r. {& T* a# }! W/ A: D: x+ g8 g' T0 L
7. </head>
. M: l/ n+ z( L& j
* W" t& S. ?& m+ f' k) I 8. <body bgcolor="#ffffff">! ]" @& ?6 T4 l3 E! D7 i. q" k
$ v0 H, u. l, G
9. 你输入的密码不正确,点击<a href="login.jsp">这儿</a>返回登录页面。5 S2 E4 m( L$ p$ o/ b: c, t5 k
8 t! k$ N, b4 f! U( q+ _; \ 10. </body>" L5 S/ {3 M8 a" H v4 e
: _6 P: G2 x' G) D; l& y, o 11. </html>
9 y g6 |7 p/ U2 ?6 B6 l { . V6 b! g! F- Y Z8 L" h/ g( O5 y) c
# \9 K- S4 W$ Z4 B6 c; y6 X6 S3 W |
|