struts2工作流程

来源:互联网 发布:ubuntu win7双系统 编辑:程序博客网 时间:2024/05/16 01:33



1.客户端发出一个HttpServletRequest请求,这个请求经过一系列的过滤器Filter(如ActionContextCleanUp等),这些过滤器最终会调用FilterDispatcher类(现在是StrutsPrepareExcuteFilter)的serviceAction方法,FilterDispatcher是控制器的核心,就是MVC的struts2实现中控制层的核心

2.FilterDispatcher有时询问ActIonMapper(访问静态文件时)是否需要调用某个Action来处理这个HttpServletRequest请求,如果ActionMapper决定需要调用某个Action,则FilterDispatcher会创建一个ActionPoxy,并调用其execute方法

3.ActionProxy通过Configuration Manager(struts.xml)询问框架的配置文件,找到需要调用的Action类

4.ActionProxy类中拥有一个ActionInvocation实例,调用其invoke方法,在调用invoke方法之前,会根据配置加载Action相关的所有拦截器Interceptor,调用invoke方法过程是顺序调用所有的拦截器的intercept方法,最后调用Action类中的方法(其中,拦截器的intercept方法中又会调用ActionInvacation的invoke方法)

5.一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到相应的返回结果result

6.最后通过HttpServletResponse返回客户端一个响应

需要注意的是:

1、调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用

2、Struts 2的核心控制器是FilterDispatcher,有3个重要的方法:destroy()doFilter()Init(),可以在Struts 2的下载文件夹中找到源代码,执行顺序是:init()---->doFilter()-------->destroy()