重新听课,复习---方法

Struts2的执行流程:

1-1:一个请求过来,走前端控制器StrutsPrepareAndExecuteFilter

前端控制器是一个过滤器,过滤器中有doFilter()方法,在这个方法中,

首先处理了字符集,然后将request和response放到ThreadLocal,表示线程安全

1-2:接下来判断是否是一个.action请求,如果不是直接跳转视图;否则继续走struts的流程

1-3:判断ActionMapping对象是否为空,为空转向视图;不为空,继续走struts的流程

1-4:创建ActionProxy代理对象,在创建代理对象的时候,创建了一个struts2的核心对象ActionInvocation,ActionInvocation贯穿了     整个struts的执行流程,代理、目标action、拦截器、结果都在ActionInvocation的成员变量位置

1-5:代理对象调用init方法进行初始化,在init方法中创建了目标action,在创建目标action的时候,使用了struts的ObjectFactory

1-6:将创建好的action赋值给ActionInvocation对象的成员变量

取出默认的20个拦截器,放到ActionInvocation的迭代器上

1-7:ActionProxy代理执行execute方法

ActionInvocation的invoke方法会被调用

调用20个拦截器,拦截器执行完毕之后,调用目标action的execute()方法

目标action的execute()方法执行结束之后,返回一个字符串,根据这个字符串,

struts的ObjectFactory对象会封装一个Result对象,result指向了具体的视图

拦截器出栈,response响应给浏览器

你可能感兴趣的:(重新听课,复习---方法)