我们可以在控制器(Controller)的实现类中为的每一个Action 定义相应的Method,以实现该Action 的具体操作。Method 的名称必须是"do + Action 的名称",其中系统会自动将Action 名称的第一个字母转换成大写。例如:当我们要为一个名为add 的Action 定义操作时,我们应当在Controller 中添加一个名为doAdd 的方法。控制器(Controller)默认方法对应的Method 名是"doAction",这意味着我们无法为Controller 定义一个名为"action"的Action。开发人员在实现一个Action 的Method 时,须定义一个要返回给系统的ActionForward 对象。
Action 正常结束后,系统将自动根据Method 返回的Forward 对象的定义对Request 进行跳转。如果系统在调用Action 的过程中发生异常,系统将自动搜索匹配的Exception 配置来处理请求。开发人员可以为每一个Exception 定义它要捕获的系统异常。如果不为某一个Exception 它要捕获的异常类型,该Exception 将处理所有的异常(相当于java.lang.Throwable)。
当系统根据名称为一个Action 查找匹配的Forward 对象时,系统将首先在当前Action 中查找。如果未能找到匹配的对象,系统将继续到Action 所属的控制层单元(Unit)中去查找,继而到全局的控制层单元(GlobalUnit)中查找。
<ation>元素属性说明如下:
属性 |
说明 |
description |
Action 说明 |
name |
Action 逻辑名称 |
XML 范例代码:
<action name="login"> |
异常处理
当Action 发生异常,系统根据异常类型在当前Action 中查找匹配的<exception>对象,并用匹配的<exception>对象加以处理,如果未能找到匹配的<exception>对象,系统将继续到Action 所属的控制层单元(Unit)中去查找全局的<exception>配置,如果还未找到可以处理的<exception>元素,就到全局的控制层单元(GlobalUnit)中查找。
gobal.map.xml中定义的全局<exception>:
<exception path="/dorado/exception.d" /> |
该处配置中没有指定任何Exception对象,global.map.xml文件将会利用该配置处理所有SbUnit中未处理的任何异常。
图示说明:
新增Action,并设置Action 的属性
图表 87
图表 88
在Action中添加Forward与Exception
图表 89
配置好的forward 可以在controller 实现类中的"do+Action 名称"中使用如下代码使请求重定向:
public ActionForward doAction(Action action, HttpServletRequest request, HttpServletResponse response) |
Attachments:
worddav551b31eaac6aabd8b446936c14c5d4a8.png (image/png)
worddav494b16d611cff14d72c490d9d0a13c26.png (image/png)