网上找了几个Struts2的教程,没几个写明白了,就到官方链接的教程上看了下,随便翻译了一下框架指南,翻译会有很多错误,大家见笑了。
Struts2为提供了一个为用户快速构建应用程序的平台。
Struts2是基于OpenSymphony的网络工程框架。
Struts2实现模型视图控制器(MVC)设计模式。
在Struts2的模型、视图和控制器中分别实现了Action,result和FilterDispatcher。
该控制器的工作是将用户的请求(request)映射到适当的action。
Struts2 的 FilterDispatcher 进行着控制器的工作。
模型包含数据和业务逻辑。
在Struts2 的模型中,实现了Action部分。
视图是MVC模式的显示部分。
Struts 2的视图是一般是使用JSP,Velocity Template,Freemaker或其他表示层技术实现的。
控制器接收用户请求(request),并确定哪些Struts2的Action被调用。
框架创建一个Action实例 关联ActionInvocation新创建的实例。
Struts2调用的action应该通过一系列应用程序的XML文件中定义的拦截器拦截处理。
框架调用ActionInvocations invoke()方法开始执行action。
当每次invoke()方法被调用,ActionInvocation咨询其状态并执行下一个拦截器。
ActionInvocation控制堆栈中通过调用interceptors intercept()方法的拦截器。
拦截器的intercept()方法依次调用ActionInvocation 的invoke()方法直到所有拦截器都被调用,最后action本身将被调用,相应的结果将返回给用户。
一些拦截器工作在Action执行之前,一些拦截器工作在Action执行之后,这没有必要的,它应该在每次调用的时候都工作。这些拦截器是调用之前和之后的都运行。
首先是所有的拦截器按着他们在栈中定义的顺序执行。
当action被调用,result将生成。
再次,所有的拦截器按目前堆栈相反的顺序调用。
Strut2的另外2个重要特征是ONGL和ValueStack。
Object-Graph Navigation Language (OGNL) 是一种强大的表达式语言是用来查询和操纵ValueStack中的数据。
OGNL帮助数据传输和类型转换。
OGNL表达式语言提供简化stytax引用Java对象。
OGNL被用于绑定Java端数据属性的string-based视图层。
Struts2中的Action驻留在ValueStack,ValueStack是 ActionContext中的一部分。ActionContext是一个全局性的存储区域,包含所有与请求处理相关数据。
当一个请求的参数传进来,拦截器将把请求的数据移动到ValueStack。
ActionContext是线程本地的,这意味着这些在ActionContext中存储值的每个线程是独特的,这使得Struts 2 Action 线程安全。
原文地址:http://www.99xunle.com/struts-2-framework-tutorial-732.html