-------------------------------------------------Struts2 工作原理流程图------------------------------------------------------
----------------------------------------------------Struts2工作机制-----------------------------------------------------------
从上图上我们可以很清楚的看到,一个请求在struts2框架中的处理大概分为以下几个步骤:
1.客户端初始化一个指向servlet(tomcat)的请求;
2.这个请求经过一系列的过滤器(filter),这些过滤器中的有个叫ActionContextCleanUp这个过滤器对于Struts2集成其他的框架有着很大的帮助(Sitemesh plugin);
3.接着filterDispatch被调用,filterDispatch询问ActionMapper来决定这个请求是不是调用某个action;
4.如果ActionMap决定调用某个action,则filterDispatch会把请求的处理交给actionproxy;
5.ActionProxy通过Configuration Manager询问配置文件,知道所需要的action方法;
6.ActionProxy创建一个ActionInvocation实例;
7.ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用
一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper。