天天看点

浅谈Webwork2执行流程

1.服务启动的时候,ServletDispatcher 通过DefaultConfiguration 先加载 webwork.properties 和default.properties ,并查找 webwork.properties 中 webwork.custom.properties 配置的其他属性文件加载。加载完毕后再通过属性中配置的 webwork.custom.i18n.resources 加载国际化资源文件供以后使用。之后再查找 webwork.configuration 属性看是否用户指定了自己的Configuration 实现,如果有就用用户自己的Configuration 实现,否则返回 WebWork自己的实现(DelegatingConfiguration)。大部分情况下,使用 WebWork 自己的实现已经足够,用户不需要自己去实现一个Configuration,除非你想加载XML 等格式的配置文件。  

2.每一个以*.action 结尾的请求,都会被映射到ServletDispatcher 调度器的service 方法进行处理。首先把init 方法读取的encoding 、locale 配置设置到request 和response 中,之后对request 进行判断,看是否属于多类型参数(multipart/formdata)的请求,如果是,则根据WebWrok 配置信息对request 进行相应的包装。包装完request 对象后,service 方法又调用了ServletDispatche日、 自身的serviceAction 方法,在该方法中调用了createContextMap创建Action 上下文,并通过ActionProxyFactory 创建ActionProxy 实例,ActionProxy又会调用ConfigurationManager 去读取XWork 的配置信息并获得当前请求的Action 的所有配置信息,之后遍历执行这个Action 对应的所有拦截器,然后执行Action 对应的方法(默认的是execute),再根据Action 执行返回的值去调用执行相应的Result(返回结果处理)的方法做一定的处理后,把输出结果返回给客户端。

继续阅读