Java学习之Struts 2.x

与传统的Struts1.x相比,Struts2.x允许使用更普通的、传统的Java对象作为Action;Action的execute方法不再与Servlet API耦合,因而更易测试;支持更多的视图技术;基于AOP思想的拦截器机制,提供了极好的可扩展性,整合Ajax支持等。

Java学习之Struts 2.x

1、Struts2的MVC架构

                                                  Java学习之Struts 2.x

控制器:FilterDispatcher,它检查每一个输入请求,决定哪个Struts2动作处理这个请求。

模型:应用程序的内部状态,这个状态由数据模型和业务逻辑共同组成。

                                    Java学习之Struts 2.x

                                                                                Action工作原理

ONGL是一个用来引用、操作ValueStack中数据的强大的表达式语言。

ActionContext包含所有数据,Struts2将所有相关数据集中保存在ValueStack。

2、声明应用程序的架构有两种不同的方式:XML或Java注解。

3、Struts2动作的3个作用:动作封装工作单元、动作为转移数据提供场所、动作为结果路由选择返回控制字符串。Struts2动作不必实现Action接口,任何对象都可以通过实现一个返回控制字符串的execute方法来非正式地实现动作与框架之间的契约。不过大部分的动作会实现com.opensymphony.xwork2.Action接口。ActionSupport类。

4、拦截器完成的任务:横切、预处理和后加工。动作的调用必须首先通过与之关联的拦截器栈。虽然拦截器很重要,但是开发人员不会去编写很多拦截器,Web应用程序的大部分的常见任务已经编写和捆绑进了struts-default包。总指挥是ActionInvocation,拦截器的触发顺序按照配置文件中声明的顺序触发,拦截器的intercept方法会依次调用ActionInvocation的invoke方法来调用下一个拦截器,拦截器有一个3阶段的、有条件的执行周期:做一些预处理、通过调用Invoke将控制转移到后续的拦截器、做一些后加工。

工具拦截器、数据转移拦截器、工作流拦截器

5、声明拦截器和拦截器栈,拦截器映射到工作组件。

6、Web开发的常见任务:数据转移和类型转换,发生在两端。

OGNL(Object Graph Navigation Language),对象图导航语言,用来帮助实现数据转移和类型转换。

7、Struts2与Struts1完全不同,它的核心功能都是使用拦截实现“值栈”的概念,OGNL表达式和Struts2标签来解决应用程序数据,很多注解和约定,使这个框架更加易于使用。

从高层次来看,Struts2是一个上拉MVC(MVC2)框架。在Struts2的Model-View-Controller模式实现以下五个核心组件:

  1. Actions

  2. Interceptors

  3. Value Stack / OGNL

  4. Results / Result types

  5. View technologies

                                        Java学习之Struts 2.x