运用 Prebuilt Action类提升开发效率

使用 Prebuilt Action类提升开发效率

Struts framework带有好几个prebuilt Action类,使用它们可以大大节省开发时间。其中最有用的是org.apache.struts.actions.ForwardAction 和 org.apache.struts.actions.DispatchAction.     

1.使用 ForwardAction    如何让用户不直接访问/Welcome.jsp.而是通过虚拟路径/Welcome.do,达到同样效果呢? 可以在struts-config.xml中配置

1 <action path="/Welcome" type="org.apache.struts.actions.ForwardAction" parameter="/Welcome.jsp"></action>

注意,该action类型是 ForwardAction,它是在Struts附带的struts.jar中定义实现的.所以不需要我们额外实现一个这样的action. 你可以配置多个

1 <action path="/Welcome1" type="org.apache.struts.actions.ForwardAction" parameter="/Welcome1.jsp"></action>

4 <action path="/Welcome2" type="org.apache.struts.actions.ForwardAction" parameter="/Welcome2.jsp"></action>

7 <action path="/Welcome3" type="org.apache.struts.actions.ForwardAction" parameter="/Welcome3.jsp"></action>  

 再讨论一下不通过一个Action类直接转发到某个页面的情况,必须注意我们仍然使用元素中的forward属性来实现转发的目标。这时元素定义如下:

1 <action path="/home" forward="/index.jsp"> 4 </action>

以上两种方法都可以节省你的时间,并有助于减少一个应用所需的文件数。    

2.使用 DispatchAction     

 

DispatchAction是Struts包含的另一个能大量节省开发时间的Action类。

与其它Action类仅提供单个execute()方法实现单个业务不同,DispatchAction允许你在单个Action类中编写多个与业务相关的方法。这样可以减少Action类的数量,并且把相关的业务方法集合在一起使得维护起来更容易。    

要使用DispatchAction的功能,需要自己创建一个类,通过继承抽象的DispatchAction得到。对每个要提供的业务方法必须有特定的方法signature。

例如,我们想要提供一个方法来实现对购物车添加商品清单,创建了一个类ShoppingCartDispatchAction提供以下的方法:

1 public ActionForward addItem(

2 ActionMapping mapping,

3 ActionForm form,

4 HttpServletRequest request,

5 HttpServletResponse response)

6 throws Exception;

那么,这个类很可能还需要一个deleteItem()方法从客户的购物车中删除商品清单,还有clearCart()方法清除购物车等等。

这时我们就可以把这些方法集合在单个Action类,不用为每个方法都提供一个Action类。    

在调用ShoppingCartDispatchAction里的某个方法时,只需在URL中提供方法名作为参数值。

就是说,调用addItem()方法的 URL看起来可能类似于:    

http://localhost:8081/project/...     

其中method参数指定Action类中要调用的方法。

参数的名称可以任意配置,这里使用的"method"只是一个例子。参数的名称可以在Struts配置文件中自行设定。