Struts中的异常处理机制

Struts中的异常处理机制

 

Struts中的异常处理,必须利用Struts内置的机制(只针对actionexecute)和标准的servlet机制相结合,才能完美的实现。

 

1.         首先通过在配置文件中定义全局异常处理或者特定于action的异常处理句柄

 

2.         然后在process执行actionexcute遇到异常就读取其异常处理配置,并生成相应的ExceptionConfig对象。若ExceptionConfignull(即此action没有配置异常处理),则直接抛出IoException或者ServletException到总控的dopostdoget,由容器负责处理(此时将会用到在web.xml中定义的异常处理对象)。

 

3.         根据ExceptionConfig生成ExceptionHandler,然后执行其execute方法。在execute中将产生actionerrors(包含由配置生成的actionerror列表)对象,并放到相应的scope(默认为request)(Globals.EXCEPTION_KEY为健),然后转到错误处理叶面,以<html:error>显示。

 

4.         form bean 的验证方法中产生的action errors也是以Globals.EXCEPTION_KEY为健,但是存在request中。

 

5.         struts的异常处理利用了其内置的资源文件和国际化机制。由于生成的actionerror是配置exception时的keyexception.getMessage()键值对,所以必须在message中放入足够的信息,我们无法在发生异常时,得到异常本身的引用,这或许是struts 的不足之处!

 

6.        在扩展struts总控时发现process()方法抛出的是IOException, ServletException,这不是明摆着不让我们扩展此方法吗?扩展时有新的异常难道都得包装成IOException, ServletException吗?不明白作者的深意?

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值