使用ActionForward优化Struts应用程序

来源:计算机等级考试    发布时间:2012-08-29    计算机等级考试视频    评论

  从一个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的讲述。)

上一页12下一页

视频学习

我考网版权与免责声明

① 凡本网注明稿件来源为"原创"的所有文字、图片和音视频稿件,版权均属本网所有。任何媒体、网站或个人转载、链接转贴或以其他方式复制发表时必须注明"稿件来源:我考网",违者本网将依法追究责任;

② 本网部分稿件来源于网络,任何单位或个人认为我考网发布的内容可能涉嫌侵犯其合法权益,应该及时向我考网书面反馈,并提供身份证明、权属证明及详细侵权情况证明,我考网在收到上述法律文件后,将会尽快移除被控侵权内容。

最近更新

社区交流

考试问答