浅谈struts2请求处理过程

当一个页面请求过来时, FilterDisptcher通过Dispatcher进行一些初始化工作,并且注入ActionMapper。 FilterDispatcher对请求进行过滤,如果请求符合要求,则返回相应的action配置信息(比如是否URL以.action结尾等),FilterDispatcher调用getMapping方法获得ActionMapping(action的配置信息)。 FilterDispatcher调用serviceAction(request,response,servletContext,mapping),serviceAction通过Dispatcher在一个Map中创建Context对象,并且置入request对象、response对象、session对象、application对象。Dispatcher然后创建一个ActionProxy对象。ActionProxy创建ActionInvoction对象,ActionInvocation首先创建ValueStack,并拷贝Map的内容到Valuestack的context中,随后ActionInvocation创建Action对象,并把Action对象放入valuestack的root中,最后创建ActionContext对象,并把Map的内容也拷贝进入ActionContext对象。ActionContext对象是我们跟request/session/application这些scope对象交互的接口,可以通过ActionContext在这些对象里面存取值。ActionInvocation创建一系列拦截器。至此创建对象完成。 FilterDispatcher执行excute方法,导致ActionProxy调用invoke方法,导致ActionInvocation执行系列拦截器,以及Action方法,ActionInvocation根据配置创建Result对象(能支持不同结果类型的Result对象),ActionInvocation执行excute方法执行呈现操作。 FilterDispatcher将ValueStack放入request Scope中是为了在标签里能获得ValueStack。

你可能感兴趣的:(工作)