下图是
Struts
的工作流程,前边我们提到,所有的请求都提交给
ActionServlet
来处理。

ActionServlet 是一个 FrontController ,它是一个标准的 Servlet ,它将 request 转发给 RequestProcessor 来处理,
ActionMapping 是 ActionConfig 的子类,实质上是对 struts-config.xml 的一个映射,从中可以取得所有的配置信息
RequestProcessor 根据提交过来的 url ,如 *.do ,从 ActionMapping 中得到相应的 ActionForn 和 Action 。然后将 request 的参数对应到 ActionForm 中,进行 form 验证。如果验证通过则调用 Action 的 execute() 方法来执行 Action ,最终返回 ActionFoward 。
ActionFoward 是对 mapping 中一个 foward 的包装,对应于一个 url
ActionForm 使用了 ViewHelper 模式,是对 HTML 中 form 的一个封装。其中包含有 validate 方法,用于验证 form 数据的有效性。 ActionForm 是一个符合 JavaBean 规范的类,所有的属性都应满足 get 和 set 对应。对于一些复杂的系统,还可以采用 DynaActionForm 来构造动态的 Form ,即通过预制参数来生成 Form 。这样可以更灵活的扩展程序。
ActionErrors 是对错误信息的包装,一旦在执行 action 或者 form.validate 中出现异常,即可产生一个 ActionError 并最终加入到 ActionErrors 。在 Form 验证的过程中,如果有 Error 发生,则会将页面重新导向至输入页,并提示错误。
Action 是用于执行业务逻辑的 RequsestHandler 。每个 Action 都只建立一个 instance 。 Action 不是线程安全的,所以不应该在 Action 中访问特定资源。一般来说,应改使用 Business Delegate 模式来对 Business tier 进行访问以解除耦合。
Struts 提供了多种 Action 供选择使用。普通的 Action 只能通过调用 execute 执行一项任务,而 DispatchAction 可以根据配置参数执行,而不是仅进入 execute() 函数,这样可以执行多种任务。如 insert,update 等。 LookupDispatchAction 可以根据提交表单按钮的名称来执行函数。
ActionServlet 是一个 FrontController ,它是一个标准的 Servlet ,它将 request 转发给 RequestProcessor 来处理,
ActionMapping 是 ActionConfig 的子类,实质上是对 struts-config.xml 的一个映射,从中可以取得所有的配置信息
RequestProcessor 根据提交过来的 url ,如 *.do ,从 ActionMapping 中得到相应的 ActionForn 和 Action 。然后将 request 的参数对应到 ActionForm 中,进行 form 验证。如果验证通过则调用 Action 的 execute() 方法来执行 Action ,最终返回 ActionFoward 。
ActionFoward 是对 mapping 中一个 foward 的包装,对应于一个 url
ActionForm 使用了 ViewHelper 模式,是对 HTML 中 form 的一个封装。其中包含有 validate 方法,用于验证 form 数据的有效性。 ActionForm 是一个符合 JavaBean 规范的类,所有的属性都应满足 get 和 set 对应。对于一些复杂的系统,还可以采用 DynaActionForm 来构造动态的 Form ,即通过预制参数来生成 Form 。这样可以更灵活的扩展程序。
ActionErrors 是对错误信息的包装,一旦在执行 action 或者 form.validate 中出现异常,即可产生一个 ActionError 并最终加入到 ActionErrors 。在 Form 验证的过程中,如果有 Error 发生,则会将页面重新导向至输入页,并提示错误。
Action 是用于执行业务逻辑的 RequsestHandler 。每个 Action 都只建立一个 instance 。 Action 不是线程安全的,所以不应该在 Action 中访问特定资源。一般来说,应改使用 Business Delegate 模式来对 Business tier 进行访问以解除耦合。
Struts 提供了多种 Action 供选择使用。普通的 Action 只能通过调用 execute 执行一项任务,而 DispatchAction 可以根据配置参数执行,而不是仅进入 execute() 函数,这样可以执行多种任务。如 insert,update 等。 LookupDispatchAction 可以根据提交表单按钮的名称来执行函数。