四种forward

2024-06-10 19:48
文章标签 四种 forward

本文主要是介绍四种forward,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Struts设置转向信息的时候,需要用到Forward。我们有四种不同的处理方式:

 

[html]  view plain copy print ?
  1.   <!--方式一、 全局转向信息,所有Action公用 -->  
  2. <global-forwards>  
  3.     <forward name="error" path="/mustLogin.jsp" />  
  4. </global-forwards>  
  5.   
  6. <action-mappings>  
  7.      <!--方式二、 直接转向,不牵扯到action,完全交给Struts控制-->  
  8.     <action path="/showLoginWithForward" forward="/index.jsp" />  
  9.   
  10.        <!--方式三、 利用Struts提供的ForwardAction转向,转向信息放在parameter中 -->  
  11.     <action path="/showLoginWithForwardAction" type="org.apache.struts.actions.ForwardAction"  
  12.         parameter="/index.jsp" />  
  13.           
  14.        <!--方式四、forward作为action子元素完成转向 -->  
  15.     <action path="/showLoginWithChildForward" type="com.jialin.struts.TestAction">  
  16.         <forward name="success" path="/index.jsp"></forward>  
  17.     </action>  
  18.       
  19. </action-mappings>  

 

这几种方式有什么区别?


1、方式一的forward的是全局共享的,所有Action都可以使用,而其余三种方式只有相应的action才能使用

2、方式二仅仅起到一个转向的作用,完全由struts控制,很方便,但是我们不方便加入自定义的操作,除非重写struts框架中的类的方法。

3、方法三和方法四,最大的区别在方式三不用我们自己写action了,它用的是Struts已经写好的action。需要注意的是,无论ActionForward还是我们自定义的action都是继承自Struts的核心类Action

那么,既然有自定义的action,为什么需要ForwardAction?
*目的是发出一个RequestDispatcher转发
*ForwardAction的绝大多数使用是作为Action的占位符
*ForwardAction创建一个请求分派器,并根据ActionMapping提供的上下文相关的URI转发控制
*许多 Struts 开发人员避免从一个页面直接连接到其他地方而是通过Action 或者 ActionForward来传递控制。这保证了工作流在Struts 配置的控制之下,在这里可以进行集中管理。
*然而,许多页面并不需要特殊的预处理(至少还不需要)。如果为这些页面创建ActionMapping,你可以使用ForwardAction,来仅进行路由控制。如果以后,需求改变,又需要进行预处理,你可以改变mapping 来为那个页面引用到一个Action。因为链接是引用到mapping, 而不是Action类, 所以你可以修改Action类而不用改变链接。

 

4、如果同时存在一个action标签同时存在forward属性,又存在forward子元素,那么前者优先,不会执行到自定义action的exceute方法。

在Struts核心类,RequestProcessor的方法process中,我们看到

  // Process a forward or include specified by this mapping
        if (!processForward(request, response, mapping)) {
            return;
        }

如果存在forward的属性,就直接返回了,不再向下执行了,不会调到我们自定义action的exceute方法。

我们如果要做一些自己的事,就必须用forward的子元素的方式,而不能用forward属性的方式。

这篇关于四种forward的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1049102

相关文章

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S

Conda虚拟环境的复制和迁移的四种方法实现

《Conda虚拟环境的复制和迁移的四种方法实现》本文主要介绍了Conda虚拟环境的复制和迁移的四种方法实现,包括requirements.txt,environment.yml,conda-pack,... 目录在本机复制Conda虚拟环境相同操作系统之间复制环境方法一:requirements.txt方法

IDEA实现回退提交的git代码(四种常见场景)

《IDEA实现回退提交的git代码(四种常见场景)》:本文主要介绍IDEA实现回退提交的git代码(四种常见场景),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.已提交commit,还未push到远端(Undo Commit)2.已提交commit并push到

CSS 样式表的四种应用方式及css注释的应用小结

《CSS样式表的四种应用方式及css注释的应用小结》:本文主要介绍了CSS样式表的四种应用方式及css注释的应用小结,本文通过实例代码给大家介绍的非常详细,详细内容请阅读本文,希望能对你有所帮助... 一、外部 css(推荐方式)定义:将 CSS 代码保存为独立的 .css 文件,通过 <link> 标签

查看MySQL数据库版本的四种方法

《查看MySQL数据库版本的四种方法》查看MySQL数据库的版本信息可以通过多种方法实现,包括使用命令行工具、SQL查询语句和图形化管理工具等,以下是详细的步骤和示例代码,需要的朋友可以参考下... 目录方法一:使用命令行工具1. 使用 mysql 命令示例:方法二:使用 mysqladmin 命令示例:方

Java调用Python的四种方法小结

《Java调用Python的四种方法小结》在现代开发中,结合不同编程语言的优势往往能达到事半功倍的效果,本文将详细介绍四种在Java中调用Python的方法,并推荐一种最常用且实用的方法,希望对大家有... 目录一、在Java类中直接执行python语句二、在Java中直接调用Python脚本三、使用Run

SpringBoot中四种AOP实战应用场景及代码实现

《SpringBoot中四种AOP实战应用场景及代码实现》面向切面编程(AOP)是Spring框架的核心功能之一,它通过预编译和运行期动态代理实现程序功能的统一维护,在SpringBoot应用中,AO... 目录引言场景一:日志记录与性能监控业务需求实现方案使用示例扩展:MDC实现请求跟踪场景二:权限控制与

Python处理函数调用超时的四种方法

《Python处理函数调用超时的四种方法》在实际开发过程中,我们可能会遇到一些场景,需要对函数的执行时间进行限制,例如,当一个函数执行时间过长时,可能会导致程序卡顿、资源占用过高,因此,在某些情况下,... 目录前言func-timeout1. 安装 func-timeout2. 基本用法自定义进程subp

C++从序列容器中删除元素的四种方法

《C++从序列容器中删除元素的四种方法》删除元素的方法在序列容器和关联容器之间是非常不同的,在序列容器中,vector和string是最常用的,但这里也会介绍deque和list以供全面了解,尽管在一... 目录一、简介二、移除给定位置的元素三、移除与某个值相等的元素3.1、序列容器vector、deque

Java实现MD5加密的四种方式

《Java实现MD5加密的四种方式》MD5是一种广泛使用的哈希算法,其输出结果是一个128位的二进制数,通常以32位十六进制数的形式表示,MD5的底层实现涉及多个复杂的步骤和算法,本文给大家介绍了Ja... 目录MD5介绍Java 中实现 MD5 加密方式方法一:使用 MessageDigest方法二:使用