Struts2 快速充电 Quick Start

[b]Struts 2[/b]的目标是自动化[u]Java Web开发中的常用操作[/u],提高开发效率。

Struts 2中的action, result和FilterDispatcher分别是对model,view和controller的实现。FilterDispatcher将HTTP请求映射到相应的action(映射关系是在项目配置文件里定义的)。[u]Action组件[/u]用来实现数据和业务逻辑。JSP,[u]Velocity Template[/u],[u]Freemaker[/u]或一些其他的展现层技术为视图(view)服务。

FilterDispatcher转发请求到某action时,如果该action没有实例化,则创建一个实例,关联到一个新的ActionInvocation实例上。对action的调用应该依照定义,传入一系列interceptor。

ActionInvocation的invoke()方法会启动action的执行。

每当invoke()方法被调用,ActionInvocation根据其状态,执行下一个interceptor。

ActionInvocation通过调用interceptor的intercept()方法来控制stack中的interceptor。

Interceptor的intercept()方法依次调用ActionInvocation的invoke()方法,直到所有的interceptor被调用。最后,action本身被调用,相应的结果返回给用户。

一些interceptor在action执行之前就会工作,一些interceptor在action之后工作。它们每次调用之时并不必须做出反应。

这些interceptor在action执行前后都被调用。

所有的interceptor都按照stack里的定义顺序被调用。

然后,action被调用,生成结果。

重申一次,stack中的所有interceptor按反向顺序被调用。

Struts2的另外重要特性是OGNL和ValueStack。

OGNL(Object-Graph Navigation Language)是强大的表达式语言,用来引用和操控
ValueStack中的数据。

OGNL帮助数据传输和类型转换。

OGNL表达式语言提供简化的语法来引用Java对象。

OGNL被用来将Java端数据属性绑定到string-based的view层。

action存在于ValueStack中,ValueStack则是ActionContext的一部分。ActionContext是全局的存储区域,保存一个HTTP request处理的相关数据。

当一个请求到达, params interceptor帮助将request data移动到ValueStack中。

OGNL将string based的表单数据转换成相应的Java类型。OGNL是利用一套内建的类型转换器莱完成这些的。

重申一次,当结果生成时,OGNL将ValueStack中的Java类型的属性转成string-based的HTML输出。

ActionContext是线程本地的,意思是其内部存储的值是线程唯一的,它保证了Struts2 action的线程安全。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值