天天看点

javaEE中Struts框架关于业务控制器Action详解(四)

本文部分文案参考书籍

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方法。

继续阅读