使用ActionForward优化Struts应用程序

http://tech.ddvip.com   2007年06月20日    社区交流

内容摘要:要完全了解ActionForward类,我们需要再次运用在本系列第一部分和第二部分构建的login应用程序。你可以下载完整的应用程序,把它重命名为myStrutsApp2。它的web.xml和struts-config.xml文件同myStrutsApp1中的文件是一样的,JSP页面也没有改变。只有action类同以前不同。

  从一个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)

责编:豆豆技术应用

正在加载评论...