个人觉得了解Struts 2的工作流程还是很重要的,这样你才能知其然并知其所以然。因为有时候面试的时候会问你这个问题,虽然说你会用,但是人家一问你这个问题你不知道怎么回答就尴尬了,很有可能会与这份工作失之交臂。
1、首先客户端提交一个(HttpServletRequest)请求。
2、请求被提交到一系列的过滤器(ActionContextCleanUp、SiteMesh以及其他的过滤器、FilterDispatcher),请注意请求是按照括号里的顺序进行的。
3、FilterDispatcher接收到请求后询问ActionMaper是否需要调用某个Action来处理该请求,如果是需要则把请求的处理交给ActionProxy。
4、ActionProxy通过Configuration Manager(struts.xml)询问框架配置文件,找到需要调用的具体Action类。
5、ActionProxy创建一个ActionInvocation实例,同时ActionInvocation通过代理模式调用Action。但在调用之前ActionInvocation会根据配置加载Action相关的所有Interceptor(拦截器)。
6、Action执行完毕之后,ActionInvocation根据struts.xml中的配置找到相对应的返回结果result,然后根据结果返回相对应的视图显示在客户端。