- UID
- 16428
- 主题
新手上路
- 金钱
-
- 威望
-
- 贡献
-
- 日志
- 好友
- 帖子
- 主题
- 听众
- 收听
- 性别
- 保密
|
JBuilder2005实战JSP之错误处理(4) ' u8 ~! J( H3 Y s. H# Q
% S4 ^8 ^8 K2 s3 @ 错误处理页面error.jsp. F0 y9 C( t+ Y$ _
1 ^' Z1 u! t. ^ Web应用程序一般都有一个或多个统一的错误处理JSP页面,以便在功能性的JSP页面发生错误时,能以一种友好的形式向用户反馈。友好而统一的错误页面是Web展现层一个无可忽略的方面。" K6 N5 l$ C4 w; G
D; R8 B5 x% u0 ]9 G5 d
下面,我们创建错误处理error.jsp文件,其代码如下所示:. {& a4 S; j2 ?. f6 r/ }# @! n2 a
* A( ~5 `" _2 A" p4 U& W 代码清单 11 error.jsp错误处理JSP页面* @5 `8 y1 v$ I% y2 y3 r; {
8 }8 H7 k9 ^- H( K" N% ?
1. <%@page contentType="text/html; charset=GBK" isErrorPage="true" %>
, i5 L; R- Y* E ^2 Z+ v
. Z4 z! S) k Z) `7 w
/ X, p' a, a( ?7 }# j. M% ~ 2. <html>
; R2 }8 v" i e3 a k2 K+ D
+ f }/ I0 |$ {5 u5 F 3. <head>" P) e( @0 R! f, S( D
. m8 [" X, @% b8 S9 U
4. <title>error</title>
8 P8 C. m& U9 ^. R# x' @8 L- d1 c6 `
5. </head>6 R9 n# g" G, ~1 C
0 w4 O7 X" N0 d! j
6. <body bgcolor="#ffffff">8 G. x% x7 {6 X& P: p
, o' C$ Q* G; K, i; }# a' O 7. 抱歉,系统发生异常,点击<a href="login.jsp">这儿</a>返回首页8 p& C/ |& F0 @7 `
+ ]* ^ \( i2 F$ j! \
8. </body>
' O8 W* D0 [/ {
" ~/ [1 p* @, |8 ]) s) z% P; J9 X: B 9. </html>
3 H4 p" v8 Y R( ?; Z6 R
# _2 c* b, U' Z9 ^+ e: U, x4 K4 n+ u7 s5 E
: T' k5 M/ t0 G6 j0 X
错误处理JSP页面的page指令标签中的isErrorPage属性应该设置为true,如第1行所示,这样JSP页面中就可以访问exception隐含对象了。在第7行,我们用一种"优雅"的方式向用户报告程序错误并提供一个返回到登录页面的链接。
5 B5 P" U. L% x ~, _0 X* D" T7 j7 ? @; s! n2 e# }7 v1 I
现在,我们回过头去,通过<%@ page errorPage="错误处理JSP"%>将error.jsp指定为switch.jsp和login.jsp的错误处理页面。
$ l/ j4 t. s2 y" R# [
. }' S6 R% E7 X6 N/ J- E y8 x* ? 为switch.jsp页面添加错误处理页面后,其代码如下:* c) K7 d; j+ _
$ w& L. H2 L! v1 t" J/ G
代码清单 12 switch.jsp添加错误处理Jsp页面! t' H N- |# Y: s) J) ]
}% j' q0 Q$ y) }0 _+ b3 X
1. <%@page contentType="text/html; charset=GBK" errorPage="error.jsp"%>
7 ]8 Y J/ ^3 N
" _7 T/ F& D7 Q ` f/ k$ h4 O* I5 U/ c- J' J) A$ \6 v! \; I; e
2. <%@page import="bookstore.*"%>
! O! D( C2 r: ^9 Q2 [( Q0 \- O5 v$ k6 F& P( s' E" P7 H& ^( k0 P4 F0 M
3. <%@page import="java.sql.*"%>4 j" _1 v6 i. c7 X, \9 @, o
2 W* E! j0 Z8 t+ r0 x* v/ V" a 4. ,www.jnkfp12.com,www.njkfp12.com,www.qdkfp12.com2 [; Y/ c/ y7 c0 Y6 C
8 D/ z7 O3 x$ ?( t& _/ x: i3 r8 q% [/ r5 }3 |& Z
5 y6 G6 h! W0 C; M. b 为login.jsp页面添加错误处理JSP页面后,其代码如下:$ i0 G6 P4 R9 C
. d; Q8 _& {! w3 w( q$ `! m
代码清单 13 login.jsp添加错误处理页面6 t$ b6 m; q) \7 _) a& s
! s: P: F* H8 s+ l0 i9 y0 a 1. <%@page contentType="text/html; charset=GBK" errorPage="error.jsp"%>
' p! i @! e3 O$ `! g 5 k5 q# n6 o. l4 q
7 ?& E7 f: Z f% r' H2 A' d
2. <%@page errorPage="error_error.jsp"%>( ?6 L% V6 a* a) u" O; }' z& ?
, Z0 p! L9 b; y 3. ,www.shkfp12.com,www.sykfp12.com,www.szkfp12.com" \3 }$ l8 [; z& G: `
5 E! j. \* I. [3 L! G) _9 |8 |# z9 Q$ z, s
# l+ ?8 E. {, l: I, z. r2 {
这样,当switch.jsp的SQL查询语句不正确引发SQLException异常时,那个晦涩难懂的异常迹信息错误页面不见了,取而代之的是下面这个友好的报错页面:) x& L) _" d! Z j
4 w9 ?* }- Y7 M0 \% t
8 J; @0 o+ I) F% m9 {2 T( f3 B
' H) ~. c) ~- f& _& Y6 N" V! h! `4 f3 ^: c
图 15 友好的错误处理页面
9 @+ C5 T/ S H4 h) x0 ]
$ ^, N' p7 M& l; {/ w4 g+ o( |$ z' I% ]4 p6 G
9 e( N6 w3 `& Z# F
登录失败fail.jsp% l$ r1 L* K, X. d- @! A* {
$ f s( S4 w+ Q7 G8 u/ t7 s
当用户提供不正确的密码时,switch.jsp将转向fail.jsp页面,同样你可以通过JSP向导创建fail.jsp页面,fail.jsp的代码如下:( D# f: c' r% n/ o1 s
! ~ B7 z! `7 s9 w' h
代码清单 14 fail.jsp 登录失败页面' U f, _* F# m. h6 z% I/ l2 B) F
1 a- b4 y2 I' S! w$ A" y! l 1. <%@ page contentType="text/html; charset=GBK" errorPage="error.jsp" %> 1 l# i5 I# S& I- p* P5 t
) ~$ M* M' q- \, M6 }: O4 d8 p
- t6 F! a k$ g
2. <html>, |- }/ b' R" u' Z" S! Z
2 h A0 U: x% j5 ~ ~' m3 }
3. <head>
f0 y& ?: s* C; Q3 O4 \2 w4 ], g) L9 m8 q( Q# ^) i! e' Q2 d& c) q
4. <title>( u- ?& f& ~; e/ P3 r; G A
# u4 ~, _9 w' @/ [ 5. fail0 y0 h* @& l# y* s7 |
5 X, n8 O* N/ u9 R: g" m 6. </title>/ ], p$ y9 D; x. H
+ ]* @7 C; r1 i. b6 A
7. </head>' `, a, t4 j8 I/ I; `: \* r/ _" s
/ n& Q5 F/ E8 m( w* I' T 8. <body bgcolor="#ffffff">, W- d3 F2 s5 X, c
1 B. a* p& E) t
9. 你输入的密码不正确,点击<a href="login.jsp">这儿</a>返回登录页面。- [$ D" P8 b3 Y5 v" [
) v/ f5 t( ^6 h) @0 k5 @ 10. </body>+ I5 I9 T1 i$ g5 e: v
7 q# `; Q- F( v2 K, ]1 c" A- y 11. </html>
# U3 T G; i! P; R6 }' G8 ] 0 ]9 D' u. H/ y8 J
9 D, @! {# S* C+ }7 {, }- V. v |
|