struts2总结

 一、 sturts2的执行流程

        struts2框架主要包含3个部分,核心控制器filterDispatcher、业务控制器Action和用户自己实现的业务逻辑组件。

        其中filterDispatcher是sturts2的核心,包含了内部控制流程和处理机制

        业务控制器Action和业务逻辑组件需要用户自己实现,用户还需编写sturts.xml配置文件,供filterDispatcher来使用。

    (1)、客户端发出http请求

    (2)、根据web.xml,该请求被filterDispatcher接收

    (3)、根据struts.xml配置文件调用相应的Action类和方法

    (4)、action处理完成后,根据struts.xml找到相应的result,并跳转至相应界面

    (5)、返回http响应到客户端

二、struts2的优点(为什么要使用它)

    1、基于MVC架构,框架结构清晰

    2、使用OGNL表达式,OGNL可以快速方便的访问值栈中的数据,调用值栈中对象的方法。

    3、拦截器,拦截器是一个action级别的AOP,sturts2中很多特性都是通过拦截器来实现的,比如异常处理、文件上传、验证等功能,并且拦截器可以被复用

    4、多种表现层技术,比如jsp、freemark、velocity等

三、拦截器和过滤器的区别

    1、拦截器不需要依赖servlet容器,过滤器依赖于servlet容器

    2、拦截器只能作用于action请求,过滤器可以作用于所有请求

    3、拦截器能访问上下文和值栈中的对象,过滤器不能

    4、在Action生命周期中,拦截器可以被调用多次,而过滤器只能在容器初始化时被调用一次

四、谈谈ValueStack(值栈)

    1、valueStack贯穿整个Action生命周期,保存在request域中,所以valueStack的生命周期和request相同。Action实例存放在valueStack中,所以OGNL才能访问action实例。当struts2接收到一个请求时,迅速创建ActionConext、Action和ValueStack。然后将Action放入ValueStack中。请求结束时,valueStack、request、以及action生命周期随之结束。

    2、valueStack是多实例的, 因为action是多实例,action和valueStack是一一对应的。

    3、使用OGNL访问值栈时无需"#"符号,而访问request、session、application的atrr时需要

    4、ValueStack底层实际上是ArrayList


你可能感兴趣的:(struts2总结)