模型2框架非常适合于web应用程序,因为它们将业务逻辑同表示逻辑分离开来,这样,软件开发人员就可以与网页制作者同时并行地工作了。但是,触发应用程序事件的模型2框架更好用,因为应用程序通过对事件做出反应,无需修改框架,就可以扩展该框架的功能。例如,如果模型2框架在执行每个操作之前和刚刚执行之后触发事件,那么,应用程序就可以处理那些事件来完成许多任务,例如身份验证、国际化或者捕获敏感表单的重复提交。
在调用某个操作的perform方法之前和之后触发事件。该事件处理扩展是用JAVA的委托事件模型来实现的。在这种模型下,事件源为事件监听器来触发事件。事件处理扩展将操作作为事件源来实现,操作为实现ActionListener接口的监听器触发事件。
在执行操作前,操作servlet创建一个操作事件,指定ActionEvent.ACTION_BEFORE_PERFORM作为事件类型。该事件传递给该操作的fireEvent方法,fireEvent方法将为注册了这个操作的每个操作监听器调用beforeAction。在执行操作后,该操作servlet将操作事件的类型设置为ActionEvent.ACTION_AFTER_PERFORM。该事件再次传递给该操作的fireEvent方法,这一次,fireEvent方法为所有注册的监听器调用afterAction。