`
showmystage
  • 浏览: 56521 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

用ActionForward优化你的Struts应用程序

阅读更多

简单之中也蕴涵着复杂性,我们在本系列第一部分和第二部分创建、研究一个简单的Struts login应用程序时,回避了许多这种复杂性。因为那两篇文章是给初学者的Struts入门读物,所以我们在应用程序中没有充分运用Struts类库。但现在,你已经做好准备学习更多的东西了。让我们先来看看真正的Struts程序员是如何运用ActionForward类的吧,它代表的是控制指令所导向的一个目的资源。

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

java 代码
  1. RequestDispatcher rd =    
  2.     request.getRequestDispatcher(destination);   
  3. rd.forward(request, response);   
  4.   

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

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

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

java 代码
  1. public ActionForward execute(   
  2.     ActionMapping mapping,   
  3.     ActionForm form, HttpServletRequest request,    
  4.         HttpServletResponse response)   
  5.     throws Exception  
因为当时我们还没有讲到ActionForward类,所以在本系列的第一部分和第二部分中所有Action类的execute方法都只返回了空值。现在,在一个Action类的execute方法中,你就可以用ActionForward类来代替下面这个RequestDispatcher对象实例了:
java 代码
  1. RequestDispatcher rd =    
  2.     request.getRequestDispatcher(destination);   
  3. rd.forward(request, response);   
  4.   
新的代码变成:
java 代码
  1. return (new ActionForward(destination));   
构建ActionForward对象
ActionForward类提供了下面五种构造器:
java 代码
  1. public ActionForward()   
  2. public ActionForward(String path)   
  3. public ActionForward(String path, boolean redirect)   
  4. public ActionForward(String name, String path, boolean redirect)   
  5. public ActionForward(String name, String path, boolean redirect, boolean contextRelative)   
  6.     
  7.   

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

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

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

java 代码
  1. public boolean getContextRelative()   
  2. public void setContextRelative(boolean    
  3.     contextRelative)   
  4. public String getName()    
  5. public void setName(String name)    
  6. public String getPath()    
  7. public void setPath(String path)    
  8. public boolean getRedirect()    
  9. public void setRedirect(boolean redirect)    
除此之外,ActionForward类还重载了toString方法并返回:
java 代码
  1. "ActionForward[" + name + "]"  

其中name是名称字段。

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

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

注意下面这行代码是新的:

java 代码
  1. return (new ActionForward("/mainMenu.jsp"));  
它替代了下面这些代码,现在它们都被注释出来了:
java 代码
  1. RequestDispatcher rd =    
  2.     request.getRequestDispatcher("/mainMenu.jsp");   
  3. rd.forward(request, response);   
同样,下面这些代码也都被重写了:
java 代码
  1. // RequestDispatcher rd = request.getRequestDispatcher("/login.jsp");   
  2. // rd.forward(request, response);   
新的代码变成:
java 代码
  1. return (new ActionForward("/login.jsp"));   

 

ActionForward是个很有用、功能很多的类,它可以让你更简单、更快、更直接地完成许多事情,这可能就是它很受欢迎的原因。

分享到:
评论
1 楼 huangshengchao 2007-12-10  
ActionForward forward = mapping.findForward("addSuccess");
StringBuffer path = new StringBuffer(forward.getPath());
path.append("?tenterpriseOID=").append(vo.getTentoid()).append("&entname=").append(request.getParameter("entname"));
forward = new ActionForward(path.toString());
forward.setRedirect(true);//调用了这个方法后后面的中文参数变成了乱码 不调用却是正常的
return forward;


为什么 能否解释一下
谢谢

相关推荐

    Struts在行动,Struts应用教程

    12. **安全与性能优化**:讨论Struts应用的安全隐患,如CSRF防护,以及性能调优策略。 通过"Struts在行动"的学习,开发者不仅可以掌握Struts框架的基本使用,还能了解其在实际项目中的应用和最佳实践,为构建高效、...

    struts in action 英文版

    Struts in Action 是一本经典的技术书籍,专注于Java企业级应用开发框架Struts。...通过对这本书的学习,你可以掌握如何利用Struts构建符合企业级标准的Web应用程序,同时也能为理解和使用其他MVC框架打下坚实的基础。

    Struts_In_Action(中文完整版)

    2. **配置详解**:书中详细阐述了Struts的配置文件(struts-config.xml),包括ActionMapping、FormBeans、ActionForward、PlugIn等核心元素的配置方法,以及如何使用XML来组织应用程序的结构。 3. **动作(Actions...

    struts in action完整中文版

    Struts是Apache软件基金会旗下的一款开源Java框架,主要用于构建企业级的Web应用程序。"Struts in Action"是一本深入探讨Struts框架的经典书籍,它的完整中文版为中国的开发者提供了全面理解Struts架构和实践的宝贵...

    Struts框架及其应用(快速入门)

    **Struts应用程序执行流程** 1. 用户发送请求到ActionServlet。 2. ActionServlet解析请求,根据`struts-config.xml`找到对应的Action Mapping。 3. 创建并实例化ActionForm,填充表单数据。 4. 调用Action类处理...

    Struts的高级应用

    4. **StrutsTestCase**:StrutsTestCase是Struts提供的一个单元测试框架,它允许开发者对ActionForm、Action和ActionForward进行测试,确保这些组件在实际运行前功能正确。使用StrutsTestCase,可以编写模拟HTTP请求...

    Struts应用开发完全手册(16-20)

    Struts是Apache软件基金会旗下面向Java平台的一个开源框架,主要用来构建企业级Web应用程序。Struts通过将模型、视图和控制器分离,实现了MVC(Model-View-Controller)设计模式,使得开发者可以更有效地组织和管理...

    浅谈Struts框架技术.

    Struts框架技术是一种基于Model-View-Controller (MVC)设计模式的开源Web应用程序框架,由Apache软件基金会维护。它的核心目标是简化Java Servlet和JSP应用的开发,提高可维护性、可扩展性和组件的复用性。Struts...

    基于struts应用的JSP图书管理系统

    《基于Struts应用的JSP图书管理系统》是一个典型的Web应用程序,它利用了JavaServer Pages (JSP) 技术和Apache Struts框架来构建高效、可维护的图书管理平台。Struts是一个开源的MVC(Model-View-Controller)框架,...

    浅谈基于Struts和Hibernate的J2EE应用

    Struts 是一款开源的Web应用程序框架,最初在2002年由Apache Jakarta项目发布,旨在简化基于MVC(Model-View-Controller)设计模式的Web应用开发。Struts 1.1是当时最新的稳定版本。Struts提供了一种组织应用程序...

    Struts1.2中文学习手册

    Struts1.2是Apache软件基金会的Jakarta项目下的一个开源框架,主要用于构建基于Java的Web应用程序。这个框架提供了一种组织应用结构和控制应用程序流程的方式,极大地简化了MVC(Model-View-Controller)模式的实现...

    struts1.2资源整合

    源码分析可以帮助你掌握Action、Form Bean、ActionForward、ActionMapping等关键类的内部实现,以及RequestProcessor、Dispatcher等组件的工作流程。 其次,`struts-1.2.4-lib`是一个包含Struts1.2运行所需库文件的...

    Struts In Action中文版

    然后,书中会通过实例演示如何创建一个简单的Struts应用程序,让你对框架的工作原理有初步了解。 在模型部分,书中会深入探讨如何设计和实现ActionForm类,以及如何与数据库交互进行数据持久化。此外,还会讲解如何...

    struts in action

    开发者需要熟练掌握如何配置ActionMapping、FormBean、ActionForward等元素,以实现应用程序的正确路由。 ActionServlet会根据URL路径匹配struts-config.xml中的配置,找到对应的Action,然后实例化ActionForm并...

    一个struts+Ajax实现的抽奖程序

    Struts和Ajax技术结合创建的抽奖程序是一种常见的Web应用程序开发实践,主要应用于构建动态、交互性强的用户界面。Struts是Java EE平台上的一个MVC(Model-View-Controller)框架,它帮助开发者构建结构清晰、可维护...

    struts 1.2驱动包

    Struts 1.2驱动包是Apache软件基金会开发的一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架。它旨在提供一个结构化的、可扩展的平台,帮助开发者构建更易于维护和管理的Web应用。Struts 1.2...

    struts in action中文版

    9. **最佳实践与性能优化**:书中会提供一些开发和部署Struts应用的最佳实践,以及如何进行性能调优,以确保应用的高效运行。 10. **测试Struts应用**:学习如何使用JUnit和模拟对象进行单元测试,以及使用Selenium...

    MVC框架struts1.2.9源码

    Struts1.2.9是Apache软件基金会的一个开源项目,它是Model-View-Controller(MVC)设计模式在Java Web应用程序中的实现。这个框架的主要目标是简化开发过程,提高代码组织性和可维护性,使开发者能够更高效地构建...

Global site tag (gtag.js) - Google Analytics