您的位置:首页 > 编程语言 > Java开发

struts2工作原理

2015-11-26 14:57 357 查看
        接触过SSH的都知道Struts是其中的一大框架,但其又分飞Struts和Struts2,因为Struts岁数可能比较大了,不如现在的Struts2更方便,所以下面就给大家介绍一下Struts2:

1、优点

        1)实现MVC模式,结构清晰,使开发者只关注业务逻辑的实现.
        2)Struts的标记库(Taglib),如能灵活动用,则能大大提高开发效率。
        3)强大的拦截器
        4)全局结果与声明式异常2、工作原理

    


一个请求在Struts2框架中的处理大概分为以下几个步骤 

    1 客户端初始化一个指向Servlet容器(例如Tomcat)的请求

    2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,

        这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin) 

    3 接着FilterDispatcher被调用,FilterDispatcher询问ActionMapper来决定这个请是否需要调用某个Action 

    4 如果ActionMapper决定需要调用某个Action,FilterDispatcher把请求的处理交给ActionProxy 

    5 ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类 

    6 ActionProxy创建一个ActionInvocation的实例。

    7 ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。

        Interceptor的调度流程大致如下:

    1.ActionInvocation初始化时,根据配置,加载Action相关的所有Interceptor。

    2. 通过ActionInvocation.invoke方法调用Action实现时,执行Interceptor。

      Interceptor将很多功能从我们的Action中独立出来,大量减少了我们Action的代码,独立出来的行为具有很好的重用性。XWork、 WebWork的许多功能都是有Interceptor实现,可以在配置文件中组装Action用到的Interceptor,它会按照你指定的顺序,在 Action执行前后运行。

8 一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可 能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper

在上述过程中所有的对象(Action,Results,Interceptors,等)都是通过ObjectFactory来创建的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  SSH struts2.0