- UID
- 16428
- 主题
新手上路
- 金钱
-
- 威望
-
- 贡献
-
- 日志
- 好友
- 帖子
- 主题
- 听众
- 收听
- 性别
- 保密
|
JBuilder2005实战JSP之错误处理(4) 0 y7 a- c8 [$ [
' j( D5 f1 n/ p+ W9 W$ m
错误处理页面error.jsp9 ~) Z+ c0 l# b0 I- \
, }- _/ ]. {2 f, @$ [# q Web应用程序一般都有一个或多个统一的错误处理JSP页面,以便在功能性的JSP页面发生错误时,能以一种友好的形式向用户反馈。友好而统一的错误页面是Web展现层一个无可忽略的方面。/ \, A0 ^% B8 _3 c, c- g1 q* j6 j
6 D5 S, b% u) b* c0 x1 i
下面,我们创建错误处理error.jsp文件,其代码如下所示:
( u4 i3 p7 w3 X4 l
3 T, z& C# ^: l 代码清单 11 error.jsp错误处理JSP页面. M, Q' {8 C' y1 g
5 V7 X: x5 s5 j 1. <%@page contentType="text/html; charset=GBK" isErrorPage="true" %> : s3 B8 u( ~" r: D
7 f: y# u0 Z+ c0 W; ?2 ~: x( {; u
2. <html>
# w3 U: M, s* l# k" q( V" V4 m5 E/ e) _$ ~7 U3 p( ~, D" u
3. <head>& I* G2 C& U2 e
. w6 G$ t9 r6 M6 { 4. <title>error</title>4 L4 F+ G( x y6 h0 s; M" @
: S0 S K5 `* A ~ 5. </head>& l# | O4 I/ J- F2 c$ K
8 k: @6 i* |4 H& B ^0 w. k5 l5 P' f
6. <body bgcolor="#ffffff">
% l9 c' |0 F8 m2 C
- ?( M% R5 q6 \6 B0 @ 7. 抱歉,系统发生异常,点击<a href="login.jsp">这儿</a>返回首页
/ u0 Z' p0 l+ a N
4 ~9 C3 v7 X( Q6 w, b 8. </body>
& F/ b) Q+ u1 `; T4 [' t6 g x) ]3 b( S) {5 E
9. </html>; q6 ^; v& |6 n# l) M3 [
4 W, U" z2 x! J8 B
# |! Q0 u, B$ K. q. Y; B$ V' M' g: U' E. x; u
错误处理JSP页面的page指令标签中的isErrorPage属性应该设置为true,如第1行所示,这样JSP页面中就可以访问exception隐含对象了。在第7行,我们用一种"优雅"的方式向用户报告程序错误并提供一个返回到登录页面的链接。# {! h8 }* U3 }8 o& W( v
$ X1 ~6 r5 H6 O
现在,我们回过头去,通过<%@ page errorPage="错误处理JSP"%>将error.jsp指定为switch.jsp和login.jsp的错误处理页面。
5 ~0 X5 Y6 A) I( k
$ ~9 c7 G/ z) A# {- {4 x 为switch.jsp页面添加错误处理页面后,其代码如下:2 E; Q+ f; L5 I8 ~
; g' ~+ g7 [" ~! o 代码清单 12 switch.jsp添加错误处理Jsp页面: B2 X2 n4 T& {. u* A* x
- M8 L: o5 P/ I
1. <%@page contentType="text/html; charset=GBK" errorPage="error.jsp"%>
: {/ W5 o9 n( P: c ?6 @! q' w1 ?0 g+ U& K
: A, M4 ~" \# O# w" M9 T2 ?
2. <%@page import="bookstore.*"%>
x" p% g. D: N# Z1 A! U3 w- E) R* U
4 P* q1 ?, F8 e# Q9 Y 3. <%@page import="java.sql.*"%>6 V! `! n& y" T+ ]) a
0 V5 l6 Z3 ^* H& h 4. ,www.jnkfp12.com,www.njkfp12.com,www.qdkfp12.com
0 J: O z0 @3 V 7 A5 ]* G1 S3 R' D" X% x
3 X/ Z+ i1 c$ z# d" j; f3 D
2 l, i5 M' f/ L 为login.jsp页面添加错误处理JSP页面后,其代码如下:; t7 F6 v* l' w1 F+ R) S
! f/ c9 P% d# c8 s0 S
代码清单 13 login.jsp添加错误处理页面
$ h% k5 \- ]; @9 ~3 Z) r/ [4 |7 \, l3 ?- ]/ a& d8 I' t0 s% }, _
1. <%@page contentType="text/html; charset=GBK" errorPage="error.jsp"%>
+ c2 L, ?! C7 i+ c& ~ 6 `1 W5 m- n4 p
9 ]( l, @6 J. Q [
2. <%@page errorPage="error_error.jsp"%>
8 Q, F9 t. q6 v1 y9 y; O; R, _* [; ]
3. ,www.shkfp12.com,www.sykfp12.com,www.szkfp12.com6 F6 D( i. a9 K; F% }6 ~+ I
* q) @8 R8 H, r' B0 V9 `6 l( o; Q. [' `: c+ {
* v2 v9 W; N: a3 ^8 l. f, ~
这样,当switch.jsp的SQL查询语句不正确引发SQLException异常时,那个晦涩难懂的异常迹信息错误页面不见了,取而代之的是下面这个友好的报错页面:8 X- B8 E. f, Y* a& [
' @5 M- m5 e7 P: ?! }% Q3 s ; w8 d, F' ?) X& C1 f9 t3 s# A
7 Y( q1 x+ I7 R ^8 g4 B
' T) C" W, w' J5 m/ |# Z 图 15 友好的错误处理页面0 a) h7 }6 ?8 ]
6 c# _+ f, Y$ k! x
( A/ B, x1 P c9 n; X
0 h0 Y/ x6 y& C 登录失败fail.jsp Z- I* B; }# Y6 H
$ W$ U E8 Z/ b$ t/ l; Y3 n. T& R8 ] 当用户提供不正确的密码时,switch.jsp将转向fail.jsp页面,同样你可以通过JSP向导创建fail.jsp页面,fail.jsp的代码如下:
' R# J% ?# c1 F* s8 q3 j8 @6 \% n1 {" X/ p& [+ V8 D) S6 U1 i
代码清单 14 fail.jsp 登录失败页面
1 q' A; M5 A+ ?/ h, K1 P% w0 t" e( R9 x$ ^
1. <%@ page contentType="text/html; charset=GBK" errorPage="error.jsp" %> $ _& ~$ Z M) q
4 a7 [1 ?& ?! R U- V2 m: _6 ?; f; {( D0 x H
2. <html>
4 f$ F* T8 p- Y7 `- N5 Z; ?
3 Z" a! g( T T* ~0 n/ J* |, m% q, P 3. <head>
% Z3 t) ]* ~( Y- r4 V
: p" [7 b- }4 M1 l6 l m 4. <title>
a S. U: r" f+ s, X" R
7 A7 e! S' K( k. k 5. fail
2 ]% I5 U z- V1 h% ]+ K! t, w) i5 z" ~6 {% {- l/ C
6. </title>
& }. |, g M) c# ]5 J7 s( ^6 x2 ~. J% g8 }1 i3 m/ M* I
7. </head>
6 \ G, [9 |/ a
# w9 K- N' ~8 M' p 8. <body bgcolor="#ffffff">6 O2 e3 ]7 X. \" u, L
1 o- y$ [2 l8 d
9. 你输入的密码不正确,点击<a href="login.jsp">这儿</a>返回登录页面。3 Y1 i% H, K4 q* @4 @, @; r
5 v" T+ E7 X) V2 p# X# G$ ?' k 10. </body>
. Y, a7 H# i3 i+ g8 z8 I8 Z1 l' p8 e$ C
11. </html>* S- M& { [ s1 n
6 }( L1 S3 [( `5 S0 ]& F
4 W5 z* L# H* Y: S$ A |
|