Struts1.3框架原理剖析(三)

这一次我们来讲一下ActionErrors这个类以及跟着哥类涉及到的相关的知识点。

ActionErrors

(一) 概念:

其实它也是一个容器,是用来存放错误的消息文本的。

(二) <html:message/>标签

可以读取ActionMessages,也可以读取ActionErrors的消息,但是默认的是读取的是ActionErrors,所以说如果页面中要读取ActionMessages里面的消息的话必须在标签对中加上message="true"这样的话就可以读取ActionMessages的消息。

(三) <html:errors/>标签

它是专门用来读取request中的ActionErrors消息,而且该标签是自动迭代的,还可以自动读取国际化资源配置文件中错误的消息样式。但是我们要在国际化资源配置文件中添加errors.header=<UL> errors.prefix=<LI>   errors.suffix=</LI>  errors.footer=</UL>这几句话

如果说我们要使用errors这个标签来输出错误信息的话我们在ActionServlet里面要使用ActionErrors这个类创建一个对象,然后调用该对象的add方法,把在资源配置文件中的key值取出来就可以了。

 以上是我们在外部来处理异常的,但是呢Struts给我们提供了一套内部处理异常的方法

这样的话我们就可以不用在ActionServlet里面写处理异常的方法了,这样的话就大大减少了该方法里面的代码数量。下面我们就详细的来了解一下Struts内部给我提供的两种处理异常的方法。

1. 编程式异常

特点:代码比较多,但是可以国际化

这样的异常处理方式我们只要在struts_config.xml配置文件中进行配置即可,我们会发现在Action标签对中有一个exception标签对,我只只要在里面对其进行配置即可。例如:

<exception type="com.wangke.exception.UserNotFoundException" key="login.username.error" handler="org.apache.struts.action.ExceptionHandler"></exception>其中type为自定义异常的方法和类的全名,key为国际化配置文件中的相应的key,handler是struts内部给我们提供的处理异常的方法。还有我们查看org.apache.struts.action.ExceptionHandler的源代码发现我们还需要在自定义异常的地方传一个参数过去,这样的话才可以接收相应的URL参数,所以我们在com.wangke.exception.UserNotFoundException这个自定义异常的构造方法中加上代码super.(msg).然后在调用该自定义异常的时候传一个我们需要传递的参数过去即可实现编程式异常的处理。

2. 个性化异常

特点:不能实现国际化,但是代码比较简洁

我们要做个性化异常其实也很简单,首先在exception这个包底下新建一个异常继承至runtimeException,然后传一个值使用super.(msg).在调用这个异常的时候自己自定义个msg的类型。例如说:throw new GolableException(username+" is not found!");直接把自己想让他显示的方式以参数的形式传递过去。然后就是修改配置文件了,第一:在国际化配置文件中写上error={0}写上一个占位符。然后在struts_config.xml配置文件中的<struts-config>标签对里面添加<global-exceptions>

    <exception type="com.wangke.exception.GolableException" path="/error.jsp" key="error"></exception>

  </global-exceptions>标签对,type是处理异常的方法全名,path是发生异常后要跳转到的页面。Key是读取国际化资源文件中的名字为error的位置。这样配置完成后就可以实现个性化异常了。

好了,以上就是我们Struts1.3一些核心的东西了,下面我们再来回顾一下我们之前讲过的一些重点知识。

  1. Struts的原理
  2. Struts的搭建过程
  3. Struts的写法,action标签对的配置
  4. Actionmapping代表的是一对标签对
  5. ActionForm会自动接收URL参数
  6. ActionForm会自动保存在request或session中(默认是保存在session)
  7. ActionForm设计膨胀问题,DynaActionForm
  8. Action的设计膨胀问题,使用DispathAction解决
  9. JAVA的国际化。Local  SourceBundle  MessageFromat
  10. 国际化资源配置文件的配置   要告诉struts_config.xml该国计划资源配置文件的Basename的值
  11. 如何在程序运行中修改local,struts将local放在了session中。Action中有this.setLocal(request,local);这个方法。
  12. 动态的国际化消息文本的处理,在Action中去动态读取国际化消息文本。使用ActionMessages和ActionErrors都是容器,放的都是ActionMessage(一条国际化消息文本)。通过new actionMessage(key,arg);在页面中就使用<html:message/> <html:error/>两个标签读取
  13. 编程式异常:每一个异常都要写自己的异常处理类,每种异常读取的国际化消息也不一样。在配置文件中写上<exception type=”” key=”” path=”” handler=””></exception>,可以国际化,但是代码比较多
  14. 个性化异常:只有一个异常类,构造方法中的msg就是一条错误信息<global-exceptions><exception type="com.wangke.exception.GolableException" path="/error.jsp" key="error"></exception></global-exceptions>读取国际化消息都是一样的error={0},只能是固定的文本,不能做国际化,但是只有一个异常类,代码简洁

以上就是我们struts的一些核心的知识点。接下来的博文中将会开始学习Struts2的一些重点知识。

 

转载于:https://www.cnblogs.com/bod08zhongkewen/archive/2013/06/08/3125956.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值