Struts2执行流程

 

StrutsPrepareAndExecuteFilter是struts2框架的核心控制器,它负责拦截所有的用户请求,当用户请求到达时,该Filter会过滤用户请求,如果用户请求以action结尾,该请求就会被转入struts2框架来处理。

 

   1) 客户端发起一个请求(*.action)

   2) 主控器StrutsPrepareAndExecuteFilter拦截请求

   3) 主控器通过ActionMapper判断请求是否交给action处理.如果是,那么判断请求的action是否存在,如果不存在,报404错误.如果不是交给action处理,那么将请求转发给对应的web组件.

   4) 主控器创建ActionProxy,这个对象全权负责action的执行.

   5) ActionProxy通过ConfigurationManager对象获得当前访问的action的相关配置信息.

   6) ActionProxy根据获得的action的配置信息,创建ActionInvocation对象.

   7) ActionInvocation对象负责执行action前面的拦截器以及action对象,并且处理action执行后的结果.

   8) action前面的拦截器被执行,最后执行action.(Struts2,多实例单线程)

   9) ActionInvocation得到action执行后的逻辑视图,根据逻辑视图找到物理视图, 然后转发请求.

 

客户端发起一个请求(*.action或无结尾),经过web.xml过滤器,走StrutsPrepareAndExecuteFilter核心控制器,进入struts2一系列的拦截器Interceptor (实现代码功能),根据struts-default.xml加载拦截器,通过action的名称来分发请求到对应的action类,执行action类的execute方法,通过execute方法中返回的字符串,在struts.xml中找到对应的结果页面(result)[在action执行之前,执行了defaultStack拦截器栈(在sruts2-core-xxx.jar目录下的struts-default.xml中定义]。

posted @ 2015-12-17 21:43  M-x  阅读(373)  评论(0编辑  收藏  举报