Struts2框架(二)——Action

本文深入探讨Struts2框架中的Action作用,包括封装业务逻辑、数据自动传输和决定视图切换。重点讲解execute()方法的实现,Action接口与ActionSupport类的使用,以及数据转移的三种方式:javabean属性匹配、对象属性接收和模型驱动。通过自定义拦截器和类型转换器,可实现更灵活的数据处理。
摘要由CSDN通过智能技术生成

动作的作用

1.为给定请求封装需要做的实际工作——业务逻辑的实现,在execute()方法中实现。

2.在从请求到视图的框架自动数据传输中作为数据的携带者——数据自动保存在动作中,可以在execute()中方便的使用数据,这是通过params拦截器实现的。

3.帮助框架决定返回哪个视图——通过返回一个”success“ ,“error”等控制字符告诉框架去转到相应的视图。

实现动作——execute()

1 Struts2中动作只是一个java类,不必非要实现Action,但是一定要有一个返回控制字符串的exectue()方法,这是框架得以调用动作的入口方法。但通常实现这样的接口会给我们带来很大的方便。

2 Action——com.opensymphony.xwork2.Action 接口定义了一个标准,有一个exectue()方法和一些控制字符串常量组成。ActionSupport是Action接口的实现类,同时ActionSupport也实现了Validateable、ValidationAware、TextProvider,LocalProvider,Serializable接口以提供诸如数据验证、错误消息本地化等功能。

3 为了开发方便,我们通常为我们的每个动作(以后用Action指代动作)继承ActionSupport类,因为ActionSupport中包含了很多的默认方法(可以看做“功能”),需要什么功能,在自己的Action中实现就可以。在ActionSupport中有个validate()方法,在实现的Action中使用特定的验证逻辑覆盖法这个方法,就可以达到自定义的验证条件。

4 struts-default包定义在系统的struts-default.xml中,声明了大量常用的Struts2组件,从常用 的拦截器栈到常用的结果类型。

数据转移

数据转移是通过拦截器、类型转换器共同完成的,默认的struts-default包提供了这些组件,当然你也可以自定义自己想要的拦截器、类型转换器来满足你的要求。(以后会讨论),defaultStack中的params拦截器提供了自动将数据从请求转移到动作对象上的功能。

三种方式转移数据:

1.动作对象上提供javabean属性,并使用相同的名字作为被提交的表单的字段。

2 在动作对象上声明一个javabean对象属性来接收数据转移,让数据直接传递到这个对象上。

存在问题:但是这会使得jsp页面表单的字段名字加深一层,很不划算!  如:LoginAction中有个User user属性,要把数据直接传递到user中,login.jsp中的用户名输入字段必须修改成<s:textfield name="user.username" label="Username"/>

3 模型驱动——实现一个接口ModelDriven,通过getModel()方法公开应用程序域对象。 在动作对象上声明并初始化一个javabean对象(new一个)来接收数据转移。使用此种方式可以不改变视图中引用的深度。

   




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值