Struts2的执行流程
参考解答:
一个请求在Struts2框架中的处理大概分为以下几个步骤:
客户端发送请求
这个请求经过一系列的其它过滤器(Filter),注意其它过滤器要放在struts2的过滤器之前,否则没有机会被执行
接着StrutsPrepareAndExecuteFilter被调用,询问ActionMapper来决定是否有某个Action能处理这次请求(路径匹配上了)
如果ActionMapper决定需要调用某个Action,StrutsPrepareAndExecuteFilter把请求的处理交给ActionProxy
ActionProxy通过访问配置文件,知道了这次请求要执行哪个Action的哪个方法
ActionProxy还会创建一个ActionInvocation的实例。
ActionInvocation真正创建Action,将Action对象压入值栈,调用调用各个拦截器以及Action
Action或拦截器执行结束会返回一个视图名,由ActionProxy根据视图名找到Result对象并执行
Result执行会导致进入jsp,jsp中利用struts标签从值栈获取模型数据,渲染显示,生成最后的html
返回响应给客户端
注意 早期版本的struts2 Filter类叫做FilterDispatcher,已经过时,被StrutsPrepareAndExecuteFilter所取代。