struts2异常处理介绍
2018-05-19 本文已影响0人
pr0metheus
我们还是以登录的例子来做介绍吧,先设计好前端页面如下图所示:

然后自定义两个异常:


编写LoginAction代码:

这里要说明的是,不是所有的验证都放入validate块中的,validate块中只进行没有业务逻辑的验证,例如:用户名长度、用户名是否为空、密码长度等,而含有业务逻辑的验证还是需要放到execute方法中的
接着编写struts.xml文件:

其中涉及到的4个jsp文件如下:




测试例子1:
依次输入zhangsan、1234,如下图所示:

点击登录后返回结果如下:

测试例子2:
依次输入123456、12,如下图所示:

点击登录后,返回结果如下图所示:

根据上述两个测试结果可以判断出:
全局result没有其作用,换言之局部result其作用了,那么对于全局异常与局部异常到底谁会其作用呢?这里就不在展示了,直接说出答案,局部异常会起作用
总结:
对于这个结果而言,我们只需要记住一点原则就可以了即:局部始终优于全局
struts2提供了一个比较好的异常机制,当发生某个异常的时候,让开发者决定往哪里跳转,而不是显示Tomcat堆栈信息
全局异常其实和全局变量类似,把大多数Action会出现的异常情况提取出来,这样就不用在每个Action中重复配置该异常以及result了