在struts或者spring中, 需要编写很多action或者controller类,而这些类一般情况下只是代理调用业务逻辑类的方法,然后转发到某个视图中.这个过程相对来说比较规范和机械. 因此对action或者controller的编写采用了另外一种模式: 基于XML的action/controller,下面是这样的一个例子:
<action>
<params>
<bean name="page" ref-bean="Page" source="request,new" target="request"/>
<primitive name="tableName" type="String" value="Student"/>
<bean name="student" ref-bean="Student" source="request" target="request"/>
<list name="students" source="code" target="request"/>
</params>
<logic>
<bl class="com.cots.common.DBBLC" method="queryAll">
<param name="tableName"/>
<param name="page"/>
<return name="students"/>
</bl>
<bl class="com.cots.common.DBBLC" method="expand" on="$student!=null">
<param name="student"/>
</bl>
</logic>
<view>
<forward uri="StudentsList.jsp"/>
</view>
</action>
一个action由四部分组成,一是输入参数,输入参数分为若干个类型,由MVC的控制器根据这个定义,进行类型转化,对象装配,和最终的数据输出(到request,session,application中),二是数据验证,包括多种验证类型,三是业务逻辑方法调用,可以调用一般的java方法,ejb的方法,或者webservice的方法,也可以直接是段java代码,四是视图转发,支持include,forward,redirect,和页面模板.业务逻辑的调用是视图的转发可以是有条件的。
相比较而言这种方式定义action,更容易编写,调试和维护.
<action>
<params>
<bean name="page" ref-bean="Page" source="request,new" target="request"/>
<primitive name="tableName" type="String" value="Student"/>
<bean name="student" ref-bean="Student" source="request" target="request"/>
<list name="students" source="code" target="request"/>
</params>
<logic>
<bl class="com.cots.common.DBBLC" method="queryAll">
<param name="tableName"/>
<param name="page"/>
<return name="students"/>
</bl>
<bl class="com.cots.common.DBBLC" method="expand" on="$student!=null">
<param name="student"/>
</bl>
</logic>
<view>
<forward uri="StudentsList.jsp"/>
</view>
</action>
一个action由四部分组成,一是输入参数,输入参数分为若干个类型,由MVC的控制器根据这个定义,进行类型转化,对象装配,和最终的数据输出(到request,session,application中),二是数据验证,包括多种验证类型,三是业务逻辑方法调用,可以调用一般的java方法,ejb的方法,或者webservice的方法,也可以直接是段java代码,四是视图转发,支持include,forward,redirect,和页面模板.业务逻辑的调用是视图的转发可以是有条件的。
相比较而言这种方式定义action,更容易编写,调试和维护.