1、用户请求提交给Struts2的过滤器,过滤器拦截用户请求。
2、如果请求以 .action(自己可以定义其他,如:.do,.html)结尾,就把请求交给Struts2框架。
3、struts2框架调用Action映射器查找有没有对应的ActionMapping。
4、如果找到,则从struts.xml里找到对应的Action,并创建Action的代理类ActionProxy。
5、代理类启用拦截器,把request请求里面的参数封装到ActionContext对象的ValueStack值堆栈对象里面。
6、如果Action的属性名与ValueStack里的属性名相同(即与request请求里的参数相同),则将ValueStack的属性值赋给对应的Action属性。
7、创建ActionInvocation对象,执行它的invoke方法,来调用Action类里面的Action方法(如execute方法)。
8、处理完后,返回一个Result对象,通过拦截器,再把处理结果分发到对应的视图页面展示。