本文部分文案参考书籍
1、Action在web开发中是应用的核心,是需要由用户开发和实现的核心组件。
Action的工作职责:取得View界面提交的数据或请求参数。对取得的数据进行数据验证。对数据进行类型转换。调用Model对象的业务方法,完成业务处理。取得Model的业务数据并保存或传递给View对象。
很多人会说它和servlet有什么区别呢?下面就是了:
servlet依赖于servletAPI;而Action可以是一个简单的java类,依赖于整个javaAPI。
servlet获取用户信息需要代码,而Action调用set***方法,直接将用户数据输入到Action同名属性中。
Servlet只能获取String数据类型,而Action可以直接转换数据类型,不需要代码。
Servlet请求方式为do***而Action,默认为excute,也可以编写多个处理请求
Action可以复用,Servlet的代码都是在一个方法里面完成的
servlet调用视图时必须给出路径及名称,耦合度高;Action减少了视图耦合度
2、Action类的实现可以是一个简单的POJO,实现Action接口,继承ActionSupport类
利用POJO时需要两个条件:提供用于保存用户输入数据的私有属性,并提供该属性对应的set***和get***方法;必须要包含无参且返回字符串类型的公共方法。
实现Action接口:里面定义了许多固定的返回的字符,方便后期维护。此时需要满足三个条件定义类时实现接口;实现excute的方法;规范返回结果,方便管理和维护
继承ActionSupport类,此类实现了Action接口
3、Action的配置
Action元素的配置:struts2框架中Action主要在.xml中配置,struts.xml被喻为视图和Action之间的纽带,每个Action都是一个业务逻辑单元,Action负责接收客户端请求,处理客户端请求,处理结果返回给客户端。
<result>
元素的配置:
<result name="逻辑视图名" type="视图结果类型"/>
<param name="参数名">参数值</param>
</result>
其中name属性指定Action返回的逻辑视图名称。
动态方法调用:
这个是通过设置的
struts.ebable.DynamicMethodInvocation=true
他可以指定method属性,使用通配符。
4、Action的传值方式:
在此框架中有属性驱动和模型驱动两种传值方式。
属性驱动(推荐使用):在Action中直接定义各种java基本类型属性,使与jsp页面属性一一对应这样提交数据就可以填充到Action属性中。
模型驱动:ModeDrivern模型驱动Action程序其实是将web表单的各个请求数据包含到一个独立的POJO的实体组件类中,然后通过该类的实例获得用户表单请求的各个表单参数,要求满足以下条件:
必须实现ModeDriven接口,并需要提供相应的泛型,这里就是使用的Java bean
实现getModel方法,其实就是简单返回一个泛型对象
在Action中提供一个泛型私有对象,这里就是简单定义一个对象并提供相应的getter和setter方法。