快速业务通道

使用ActionForward优化Struts应用程序 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-24

使用ActionForward优化Struts应用程序

时间:2010-05-21

从一个servlet内部,通过运用javax.servlet.RequestDispatcher类的forward方法你就可以将控制流程引导到一个目的资源。在login应用程序的action类中,该代码形式如下:

RequestDispatcher rd = request.getRequestDispatcher(destination);

rd.forward(request, response);

其中destination就是到一个目的资源的路径。

但是在一个典型的Struts应用程序中,你可以用ActionForward类作为替代。运用这个类的好处就是你不再需要创建一个RequestDispatcher对象并调用它的forward方法了。

你可以将ActionForward类用于一个Action类的execute方法中。注意,其中一个重载的execute方法有如下的定义,它返回一个ActionForward对象:

public ActionForward execute(

ActionMapping mapping,

ActionForm form, HttpServletRequest request,

HttpServletResponse response)

throws Exception

因为当时我们还没有讲到ActionForward类,所以在本系列的第一部分和第二部分中所有Action类的execute方法都只返回了空值。现在,在一个Action类的execute方法中,你就可以用ActionForward类来代替下面这个RequestDispatcher对象实例了:

RequestDispatcher rd = request.getRequestDispatcher(destination);

rd.forward(request, response);

新的代码变成:return (new ActionForward(destination));

构建ActionForward对象

ActionForward类提供了下面五种构造器:

public ActionForward()

public ActionForward(String path)

public ActionForward(String path, boolean redirect)

public ActionForward(String name, String path, boolean redirect)

public ActionForward(String name, String path, boolean redirect, boolean contextRelative)

虽然这些构造器是不需要说明的,但我们应该注意下面几点。在这些构造器中,第二种可能是最常用的。后四种构造器中的path参数表示的是到目的资源的路径。后三种构造器中的redirect布尔值表示的是是否执行了一个重定向(redirect)。(缺省情况下,这个值设置为false,因为redirect比forward慢。)最后,第五个构造器中的contextRelative布尔值表示该路径是否应该是context-relative的,而不是module-relative的。

同样,一个ActionForward实例也可以有一个逻辑名称,你可以用这个名称来查找与一个特殊的ActionMapping对象相关的实例。(参见本系列第四部分关于ActionMapping的讲述。)

使用ActionForward优化Struts应用程序(2)

时间:2010-05-21

学习ActionForward类的方法

ActionForward类定义了三个保护字段——name、path和redirect——它们构成了ActionForward的三个属性。ActionForward类提供getter和setter方法来从这些字段读值、给这些字段赋值。这些方法是不需要说明的,定义如下:

public boolean getContextRelative()

public void setContextRelative(boolean contextRelative)

public String getName()

public void setName(String name)

public String getPath()

public void setPath(String path)

public boolean getRedirect()

public void setRedirect(boolean redirect)

除此之外,ActionForward类还重载了toString方法并返回:"ActionForward[" + name + "]"其中name是名称字段。

最后,还有一个freeze方法,它固定了一个组件的配置。

再次运用Login应用程序

要完全了解ActionForward类,我们需要再次运用在本系列第一部分和第二部分构建的login应用程序。你可以下载完整的应用程序,把它重命名为myStrutsApp2。它的web.xml和struts-config.xml文件同

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号