Struts2 中Action的执行结果类型

2024-08-29 09:58
文章标签 类型 执行 struts2 action

本文主要是介绍Struts2 中Action的执行结果类型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Struts2的结果类型总共有以下几个(该文件在struts-default.xml)


如果结果类型没声明,默认是  dispatcher (请求转发)

下面主要说明常用的几个类型:

dispatcher : 请求转发到一个页面 (默认),不可以用这种方式转发到一个action
chain         : 一个action请求转发至另一个 action
redirect      : 响应重定向到一个页面
redirectAction      :一个action响应重定向至另一个 action
stream        :它将向浏览器发送一个输出流。


dispatcher详解:

dispatcher 结果类型是Struts2框架中默认的结果类型, dispatcher 主要用于返回JSP,HTML等以页面为基础View视图。在使用 dispatcher 时,唯一需要指定的是JSP或者HTML页面的位置,这个位置将被用于定位返回的页面.

chain 详解:

chain 结果类型是将在一个Action处理完成以后,将请求再转发至另一个Action,一定要注意的是转发,转发就意味着请求参数都不会丢失。

redirect 详解:

redirect 和 dispatcher 结果类型是相对的, dispatcher 结果类型是将请求forward(转发)到指定的URL(可以是JSP,也可以是Action);而 redirect 结果类型,则意味着将请求redirect(重定向)到指定的视图资源。
dispatcher 和 redirect 的主要差别就是转发和重定向的差别:重定向会丢失所有的请求参数、请求属性——当然也丢失了Action的处理结果。
使用 redirect 结果类型的效果是,系统将调用 HttpServletResponse 的 sendRedirect(String) 方法来重定向指定视图资源,这种重定向的效果就是重新产生一个请求,因此所有的请求参数、请求属性、Action实例和Action中封装的属性全部丢失。

重定向中携带参数的配置:

<action name="login" class="com.jellythink.practise.LoginAction">    
<result name="error" type="redirect">/error.html?info=${info}</result>
</action>


redirectAction  详解:

当需要让一个Action处理结束后,直接将请求重定向(是重定向,而不是转发)到另一个Action时,我们应该使用 redirectAction 这种结果类型。

配置 redirectAction 结果类型时,可以指定如下两个参数:
actionName:该参数指定重定向的Action名
namespace:该参数指定需要重定向的Action所在的命名空间

例如:

<package name="Lee" extends="struts-default" namespace="/Login" ><action name="login" class="com.jellythink.practise.LoginAction"><result name="error" type="redirectAction"><param name="actionName">RedirectActionTest</param><param name="namespace">/Test</param><param name="userName">${userName}</param><param name="password">${password}</param></result></action>
</package>
<package name="RedirectAction" extends="struts-default" namespace="/Test"><action name="RedirectActionTest" class="com.jellythink.practise.RedirectAction"><result name="error">/error.jsp</result></action>
</package>



这篇关于Struts2 中Action的执行结果类型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

IDEA如何将String类型转json格式

《IDEA如何将String类型转json格式》在Java中,字符串字面量中的转义字符会被自动转换,但通过网络获取的字符串可能不会自动转换,为了解决IDEA无法识别JSON字符串的问题,可以在本地对字... 目录问题描述问题原因解决方案总结问题描述最近做项目需要使用Ai生成json,可生成String类型

Mysql 中的多表连接和连接类型详解

《Mysql中的多表连接和连接类型详解》这篇文章详细介绍了MySQL中的多表连接及其各种类型,包括内连接、左连接、右连接、全外连接、自连接和交叉连接,通过这些连接方式,可以将分散在不同表中的相关数据... 目录什么是多表连接?1. 内连接(INNER JOIN)2. 左连接(LEFT JOIN 或 LEFT

Redis的Hash类型及相关命令小结

《Redis的Hash类型及相关命令小结》edisHash是一种数据结构,用于存储字段和值的映射关系,本文就来介绍一下Redis的Hash类型及相关命令小结,具有一定的参考价值,感兴趣的可以了解一下... 目录HSETHGETHEXISTSHDELHKEYSHVALSHGETALLHMGETHLENHSET

Python中异常类型ValueError使用方法与场景

《Python中异常类型ValueError使用方法与场景》:本文主要介绍Python中的ValueError异常类型,它在处理不合适的值时抛出,并提供如何有效使用ValueError的建议,文中... 目录前言什么是 ValueError?什么时候会用到 ValueError?场景 1: 转换数据类型场景

如何使用 Bash 脚本中的time命令来统计命令执行时间(中英双语)

《如何使用Bash脚本中的time命令来统计命令执行时间(中英双语)》本文介绍了如何在Bash脚本中使用`time`命令来测量命令执行时间,包括`real`、`user`和`sys`三个时间指标,... 使用 Bash 脚本中的 time 命令来统计命令执行时间在日常的开发和运维过程中,性能监控和优化是不

C# dynamic类型使用详解

《C#dynamic类型使用详解》C#中的dynamic类型允许在运行时确定对象的类型和成员,跳过编译时类型检查,适用于处理未知类型的对象或与动态语言互操作,dynamic支持动态成员解析、添加和删... 目录简介dynamic 的定义dynamic 的使用动态类型赋值访问成员动态方法调用dynamic 的

C#如何优雅地取消进程的执行之Cancellation详解

《C#如何优雅地取消进程的执行之Cancellation详解》本文介绍了.NET框架中的取消协作模型,包括CancellationToken的使用、取消请求的发送和接收、以及如何处理取消事件... 目录概述与取消线程相关的类型代码举例操作取消vs对象取消监听并响应取消请求轮询监听通过回调注册进行监听使用Wa

PHP执行php.exe -v命令报错的解决方案

《PHP执行php.exe-v命令报错的解决方案》:本文主要介绍PHP执行php.exe-v命令报错的解决方案,文中通过图文讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录执行phpandroid.exe -v命令报错解决方案执行php.exe -v命令报错-PHP War

Oracle数据库执行计划的查看与分析技巧

《Oracle数据库执行计划的查看与分析技巧》在Oracle数据库中,执行计划能够帮助我们深入了解SQL语句在数据库内部的执行细节,进而优化查询性能、提升系统效率,执行计划是Oracle数据库优化器为... 目录一、什么是执行计划二、查看执行计划的方法(一)使用 EXPLAIN PLAN 命令(二)通过 S

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]