动态网站制作指南



当前位置 > 网站建设学院 > 网络编程 > Java教程 Rss
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket

用ActionForward优化你的Struts应用程序


发表日期:2008-1-5



  简单之中也蕴涵着复杂性,我们在本系列第一部分和第二部分创建、研究一个简单的Struts login应用程序时,回避了许多这种复杂性。因为那两篇文章是给初学者的Struts入门读物,所以我们在应用程序中没有充分运用Struts类库。但现在,你已经做好预备学习更多的东西了。让我们先来看看真正的Struts程序员是如何运用ActionForward类的吧,它代表的是控制指令所导向的一个目的资源。
  
  从一个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类的方法
  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文件同myStrutsApp1中的文件是一样的,jsp页面也没有改变。只有action类同以前不同(见列表1)。
  
  注重下面这行代码是新的:return (new ActionForward("/mainMenu.jsp"));
  
  它替代了下面这些代码,现在它们都被注释出来了:RequestDispatcher rd =
   request.getRequestDispatcher("/mainMenu.jsp");
  rd.forward(request, response);
  
  同样,下面这些代码也都被重写了:   // RequestDispatcher rd =
   request.getRequestDispatcher(
   "/login.jsp");
     // rd.forward(request, response);
  
  新的代码变成:return (new ActionForward("/login.jsp"));
  
  ViewSecretAction类
  ViewSecretAction也变得更好了(见列表2)。execute方法最后的这三行代码现在由一行来处理了,返回(new ActionForward (“/viewSecret.jsp”)):  //  RequestDispatcher rd =
   request.getRequestDispatcher(
   "/viewSecret.jsp");
    //  rd.forward(request, response);
    //  return null;
  
  接下来,我们来重新查看LogoutAction类(见列表3)。注重execute方法中下面这些代码已经被替代了:  // RequestDispatcher rd =
   request.getRequestDispatcher(
   "/login.jsp");
    // rd.forward(request, response);
    // return null;
  
  你只需要用下面这一行代码来取代它就行了: return (new ActionForward("/login.jsp"));
  
  ActionForward是个很有用、功能很多的类,它可以让你更简单、更快、更直接地完成许多事情,这可能就是它很受欢迎的原因。在本系列的第四部分,你可以了解另一个重要的类org.apache.struts.action.ActionMapping,它可以使你的代码更有效、更漂亮。
关注此文的读者还看过:
·2012-5-21 17:03:48 Struts1.0学习文档-初学者入门
·2012-5-21 17:02:58 用java读写ini配置文件
·2012-5-21 17:02:56 Spring系列第1部分:Spring 框架简介(图)
·2012-5-21 17:02:45 JVM的垃圾回收机制详解和调优
·2012-5-21 17:02:37 记录一次现场“数据库迁移”的笔记
·2012-5-21 17:02:30 WindowsXP下JDK的配置
·2012-5-21 17:02:21 J2DK在不同系统中的安装
·2012-5-21 17:02:05 水面的倒影源程序
·2012-5-21 17:02:02 使用DOM解析器解析XML
站长推荐 PS笔刷下载 在线翻译 系统进程 广告代码
  发表评论
姓 名: 验证码:
内 容:
教程搜索服务
项目外包信息
·汽车配件网站制作 50000元
·整站SEO优化
·课件门户网程序
·求长期合作网站设计制作高手
·公司网站重新改版 8000元
·asp企业网站小改动
·网站flash片头
·文化传播公司网站设计稿
·UI界面设计
·产品外观改版设计 15000元
·照明灯具网站设计 10000元
·求长期合作网站设计制作高手
·做B2C网站 20000元
·Android或QT软硬件平台设计(工
·网站首页FLASH
发布信息 浏览信息
邮件订阅服务
输入你的邮件地址,你将不会错过任何关于<Java教程>的内容


网络编程文章分类
ASP教程
ASP实例
ASP技巧
ASP文摘
PHP教程
PHP技巧
PHP实例
PHP文摘
JSP教程
JSP技巧
JSP实例
JSP文摘
ASP.NET教程
ASP.NET技巧
ASP.NET实例
ASP.NET应用
xml教程
xsl教程
xml技巧
C#教程
C#应用
Delphi教程
Perl教程
Shell教程
Ajax教程
Visual Basic教程
Java教程
J2EE/J2ME教程
C/C++教程
移动解决方案
移动短信技术
移动行业动态
软件工程
WordPress
Android开发
站长工具:Google PR查询|Alexa排名查询|网站速度测试|CSS在线编辑器|OPEN参数生成器|弹出式窗口代码产生器|密码登录生成器|在线按钮生成器|Meta标签生成器|邮箱图标在线生成|多色彩特效字代码生成器|网页代码调试器|在线FTP登陆|Flash取色器|配色代码对照表|配色辞典|CSS生成器|CSS在线压缩|广告代码|框架网页代码生成器|js/vbs加密|md5加密|进制转换|UTF-8 转换工具|在线调色板|Html转换js|Html转换asp|Html转换php|Html转换perl
实用工具:汉字翻译拼音|拼音字典|在线翻译|天气预报|火星文|在线网速测试|符号对照表|个税计算|理财工具|黄金价格|购房银行按揭利率计算|汇率查询|经典小工具|汉字简繁转换|普通单位换算|公制单位换算|生辰老黄历|国内电话区号|国家代码与域名缩写|文字加密解密|元素周期表|健康查询|世界时间|全国各地车牌查询|全国车辆交通违章查询|万年历|二十四节气|汉字横竖排版|手机号码查询|计算器|ip搜索|酒店预订|机票预订
广告刊登 | 版权声明 | 联系我们 | 加入收藏 | RSS订阅
Copyright © 2000-2012 www.knowsky.com All rights reserved | 沪ICP备05001343号