Struts框架的处理过程

Posted by Surflyan on 2017-09-23

注: 本博文主要翻译自 Struts 官方文档,附上链接 https://cwiki.apache.org/confluence/display/WW/Big+Picture

Struts 对客户端的请求的处理主要经过下面几个过程:

  1. 客户端的请求经过 Servlet 容器一系列的过滤器(Filter)
  2. 过滤器 FilterDispatcher 被调用,FilterDispatcher 询问 ActonMapper 来决定这个请求是否需要调用某个 Action
  3. 若需要调用某个 Action,FilterDispatcher 把请求的处理交给 ActionProxy
  4. ActionProxy 通过 Configuration Manager 询问框架的配置文件,找到需要调用的Action类
  5. ActionProxy 创造一个 ActionInvocation 对象,调用其invoke()方法。
  6. ActionInvocation的 invoke()方法从拦截器映射中查找尚未执行的拦截器,调用它的 intercept() 方法,并将自身对象的引用作为参数传递给拦截器。
  7. 拦截器完成某写预处理工作后,如果发现还有其他的拦截器就反过来调用 ActionInvocation 的invoke()方法。如果所有的拦截器都已经执行完毕,就调用 Action 实例的 execute()方法。
  8. 一旦 Action 执行完毕,ActionInvocation 根据 Action 执行的返回 结果码(Result),在struts.xml 中查找对用的返回结果。返回结果通常是一个需要被表示的JSP或者其他的视图模板。

请多多指教!