使用 Prebuilt Action类提升开发效率
Struts framework带有好几个prebuilt Action类使用它们可以大大节省开发时间其中最有用的是orgapachestrutsactionsForwardAction 和 orgapachestrutsactionsDispatchAction
使用 ForwardAction
在应用程序中可能会经常出现只要将Action对象转发到某个JSP的情况在上一点中曾提到总是由Action调用JSP是个好习惯如果我们不必在Action中执行任何业务逻辑却又想遵循从Action访问页面的话就可以使用ForwardAction它可以使你免去创建许多空的Action类运用ForwardAction的好处是不必创建自己的Action类你需要做的仅仅是在Struts配置文件中配置一个Action mapping
举个例子假定你有一个JSP文件indexjsp 而且不能直接调用该页面必须让程序通过一个Action类调用那么你可以建立以下的Action mapping来实现这一点
正如你看到的当 /home 被调用时 就会调用ForwardAction 并把请求转发到 indexjsp 页面
再讨论一下不通过一个Action类直接转发到某个页面的情况必须注意我们仍然使用元素中的forward属性来实现转发的目标这时元素定义如下
以上两种方法都可以节省你的时间并有助于减少一个应用所需的文件数
使用 DispatchAction
DispatchAction是Struts包含的另一个能大量节省开发时间的Action类与其它Action类仅提供单个execute()方法实现单个业务不同DispatchAction允许你在单个Action类中编写多个与业务相关的方法这样可以减少Action类的数量并且把相关的业务方法集合在一起使得维护起来更容易
要使用DispatchAction的功能需要自己创建一个类通过继承抽象的DispatchAction得到对每个要提供的业务方法必须有特定的方法signature例如我们想要提供一个方法来实现对购物车添加商品清单创建了一个类ShoppingCartDispatchAction提供以下的方法
那么这个类很可能还需要一个deleteItem()方法从客户的购物车中删除商品清单还有clearCart()方法清除购物车等等这时我们就可以把这些方法集合在单个Action类不用为每个方法都提供一个Action类
在调用ShoppingCartDispatchAction里的某个方法时只需在URL中提供方法名作为参数值就是说调用addItem()方法的 URL看起来可能类似于
//myhost/storefront/action/cart?method=addItem
其中method参数指定ShoppingCartDispatchAction中要调用的方法参数的名称可以任意配置这里使用的method只是一个例子参数的名称可以在Struts配置文件中自行设定