Struts2跳转

Struts2操作同一action的不同方法跳转jar包(包括示例代码) Struts2操作同一action的不同方法跳转jar包(包括示例代码) 使用“项目名/类名!方法名.action” 立即下载

result 

name="success"

type=redirect | redirectAction | chain | plainText | httpheader

 

redirectAction

<param name="actionName">test1</param> 

 

plainText

<param name="location">/testSuc.jsp</param>   

<param name="charSet">GBK</param>  

 

======================================================================================================

Struts2的结果类型
在struts-default.xml中定义了Struts2内置的所有可用的<result-type/>
所有的Struts2结果处理类都要直接或间接的实现com.opensymphony.xwork2.Result接口
在struts-default.xml中的<result-types/>里面,有这样一行声明
Deprecated name form scheduled for removal in Struts 2.1.0. The camelCase versions are preferred.
即:不建议使用以下两种结果类型,在Struts-2.1.0中它们将被移除,应采用Java命名规则,即骆驼命名方式,也即驼峰命名规则
另外Struts2还有一些插件,这些插件还支持一些其它结果类型,这里暂时先不涉及它们


结果类型为input的页面的作用
Struts2应用在运行过程中若发现addFieldError()中有信息或者类型转换失败或着输入校验失败等情况
那么它会自动跳转到name为input的<result/>,然后转到INPUT所对应的页面
若JSP页面中表单是用普通<form>编写的,发生错误而返回该页面时,则原数据将消失
若JSP页面中表单是用<s:form/>编写的,发生错误而返回该页面时,则原数据仍存在
若没有提供name值为input的<result/>,那么发生错误时,将直接在浏览器中提示404错误


结果类型中的httpheader
httpheader结果类型很少使用到,它实际上是返回一个HTTP响应的头信息
若单纯的设置<result type="httpheader">/result.jsp</result>,执行时控制台会报如下错误
Caught OgnlException while setting property 'status' on type 'org.apache.struts2.dispatcher.HttpHeaderResult'.
java.lang.NoSuchMethodException: setStatus(java.lang.String)

翻译:应用程序在设置status属性时捕获了OgnlException异常
查看HttpHeaderResult类源代码发现,它果然定义了private int status = -1
它代表的是一个状态码,较常见的状态码如下
200对应OK
404对应File Not Found或者requested resource() is not available
500对应服务器内部错误
这时我们在<action/>中修改为<result type="httpheader"><param name="status">404</param></result>即可
这样当Action执行完毕,就会转向到SUCCESS结果,所以页面就会显示404错误提示
关于httpheader结果类型,了解即可,平时很少用到的不是很多


结果类型中的plainText
当设定为type="plainText"之后,就可以显示原始文件内容,例如文件源代码
<result name="success" type="plainText">/testSuc.jsp</result>
这时访问应用,当跳转到testSuc.jsp页面后,右键就可以查看到它的Java代码了
它比较适用于Java教学网站,但若仅设置type="plainText"的话,页面中显示中文时会乱码
这时就可以借助它的charSet属性以解决中文显示时的乱码问题

  1. <result name="success" type="plainText">  
  2.     <param name="location">/testSuc.jsp</param>  
  3.     <param name="charSet">GBK</param>  
  4. </result>  
<result name="success" type="plainText"> <param name="location">/testSuc.jsp</param> <param name="charSet">GBK</param> </result> 如果不设置 charSet属性,反而去配置 struts.i18n.encoding全局属性,是不能解决问题的
设置 charSet属性的目的就是让 JSP页面的编码与 明文显示时的 编码一致

结果类型中redirect和redirectAction的区别
redirect是在处理完当前Action之后,重定向到另外一个实际的物理资源
redirectAction也是重定向,但它重定向到的是另外一个Action
只要是重定向,那么之前凡是保存在request里面的东西就全都消失了
因为重定向实际是发送第二个请求,故请求中的东西也就不会出现在第二个请求里面了
也就是说重定向是不共享request的东西,重定向后的页面中无法接收request里的东西
另外dispatcher结果类型的default属性为TRUE,故<result-type/>缺省为dispatcher
所以如果没有设置type属性的话,那么默认的是请求转发,即浏览器显示的是*.action
但是在设置type="redirect"属性后,就可以重定向了,即浏览器显示的是/login2.jsp


Struts2的Action处理链
从一个Action跳转到另一个Action,有两种办法,即将type设置为chain或者redirectAction
chain结果类型表示将多个Action作为一个链来处理
而使用chain和redirectAction的好处就是:它会按照框架的默认后缀去自动匹配后缀
而chain和redirectAction的区别与dispatcher和redirect的区别是一样的
即同样是跳转到一个Action上,但chain是服务器跳转,而redirectAction是客户端跳转
服务器跳转的过程中,可以共享数据,这时后面的Action就可以接收前面Action中的属性信息进行二次处理


以下是chain结果类型的使用示例

  1. <action name="firstchain" class="com.jadyer.action.FirstAction">  
  2.     <result type="chain">secondchain</result>  
  3. </action>  
  4. <action name="secondchain" class="com.jadyer.action.SecondAction">  
  5.     <result type="chain">thirdchain</result>  
  6. </action>  
  7. <action name="thirdchain" class="com.jadyer.action.ThirdAction">  
  8.     <result type="plainText">/chainResult.jsp</result>  
  9. </action>  
<action name="firstchain" class="com.jadyer.action.FirstAction"> <result type="chain">secondchain</result> </action> <action name="secondchain" class="com.jadyer.action.SecondAction"> <result type="chain">thirdchain</result> </action> <action name="thirdchain" class="com.jadyer.action.ThirdAction"> <result type="plainText">/chainResult.jsp</result> </action> 或者使用 <result type="redirect">secondchain.action</result>即手工添加  .action 亦可正常访问
但不建议这么做,因为若修改应用的Action后缀,这里也需手动的把后缀改掉,麻烦得很
尽管在官方帮助文档的案例中,曾使用过这种方式来执行下一个Action,但这是不严谨的

下面的例子是访问不同命名空间下的Action

  1. <package name="test" extends="struts-default" namespace="/">  
  2.     <action name="test" class="cn.jadyer.action.TestAction">  
  3.         <result name="success" type="redirectAction">  
  4.             <!--这里也可将两行<param/>写成一行,即<param name="actionName">/xx/test1</param> -->  
  5.             <param name="actionName">test1</param>  
  6.             <param name="namespace">/xx</param>  
  7.         </result>  
  8.     </action>  
  9. </package>  
  10. <package name="test1" extends="struts-default" namespace="/xx">  
  11.     <action name="test1" class="cn.jadyer.action.Test1Action">  
  12.         <result name="success" type="redirect">/test1Suc.jsp?name=${name}</result>  
  13.     </action>  
  14. </package>  
<package name="test" extends="struts-default" namespace="/"> <action name="test" class="cn.jadyer.action.TestAction"> <result name="success" type="redirectAction"> <!--这里也可将两行<param/>写成一行,即<param name="actionName">/xx/test1</param> --> <param name="actionName">test1</param> <param name="namespace">/xx</param> </result> </action> </package> <package name="test1" extends="struts-default" namespace="/xx"> <action name="test1" class="cn.jadyer.action.Test1Action"> <result name="success" type="redirect">/test1Suc.jsp?name=${name}</result> </action> </package>

客户端跳转中的参数传递
若第二个Action使用type="redirect",那么在页面中将无法接收Action中所共享的数据
但在客户端跳转中,我们可以在链接上传参。比如result写成/test1Suc.jsp?name=${username}
在Struts2的XML文件中可以使用${}表达式,它会自动的取出Action中所有可用的属性,作为参数传递到下一页面
这里${}不是EL表达式,实际上它的本质上是OGNL表达式
由于从链接中取值,故用<%=request.getParameter("name")%>或者${param.name},这里param相当于request.getParameter("")
注意也不能使用${name},因为它是用来从page、request、session、application中取值的
并且页面中也不能使用<s:property value="name"/>接收参数值,因为它是从ValueStack中取值的
下面是代码示例

  1. <action name="test" class="cn.jadyer.action.TestAction">  
  2.     <result name="success" type="redirectAction">  
  3.         <param name="actionName">test1</param>  
  4.     </result>  
  5. </action>  
  6. <action name="test1" class="cn.jadyer.action.Test1Action">  
  7.     <result name="success" type="redirect">/test1Suc.jsp?name=${username}</result>  
  8. </action>  

----“请求转发”和“重定向”之间的区别

让浏览器获得另外一个URL所指向的资源可以使用请求转发(RequestDispatcher.forward)或则是重定向技术(HttpServletResponse.sendRedirect),但是两者的内部机制有很大的区别:

1 请求转发只能将请求转发给同一个WEB应用中的组件,而重定向还可以重新定向到同一站点不同应用程序中的资源,甚至可以定向到一绝对的URL。

2 重定向可以看见目标页面的URL,转发只能看见第一次访问的页面URL,以后的工作都是有服务器来做的。

3 请求响应调用者和被调用者之间共享相同的request对象和response对象,重定向调用者和被调用者属于两个独立访问请求和响应过程。

4 重定向跳转后必须加上return,要不然页面虽然跳转了,但是还会执行跳转后面的语句,转发是执行了跳转页面,下面的代码就不会在执行了。

Struts2简单的页面跳转示例 初学Struts2,写了一个简单的用struts2实现页面跳转的功能。高手勿喷 立即下载

相关推荐

【TM1650】STM8S TM1650芯片控制程序

以下为.h文件: #ifndef __TM1650_I2C_H #define __TM1650_I2C_H #include "stm8s.h" #include "stm8s_gpio.h" #include "tim1.h" #include "usart2.h" #include &lt;iostm8s103f3.h&gt; #include &lt;intrinsics....

cxw312864660的博客 1万+

struts的四种跳转方式

1、服务器端页面跳转。 配置方式:此种配置方式仅限于页面上跳转。不能用于action type="dispatcher">serverPage.ftl 2、客户端页面跳转 配置方式:此种配置方式仅限于页面上跳转。不能用于action type="redirect">serverPage.ftl 3、服务器跳转到action 配置

一生有你(Java) 2192

HOPE:基于强化学习的混合策略路径规划器,适用于多样化停车场景

本文提出了一种混合策略路径规划器(HOPE),用于解决自动停车中的路径规划问题。HOPE结合了强化学习(RL)和Reeds-Shepp(RS)曲线,通过动作掩码机制引导RL智能体的探索,并利用Transformer融合环境感知信息与掩码。该方法在多样且复杂的停车场景中实现了超过97%的成功率,并通过真实实验验证了其泛化能力。此外,本文还提出了基于空间与障碍物分布的停车场景难度分级标准,进一步提升了训练与评估的效率。实验结果表明,HOPE在规划成功率和跨场景泛化能力上均优于传统的基于规则算法和朴素强化学习方法

weixin_42783201的博客 1466

重温经典struts1之八种页面跳转或请求转发的方式

struts1中八种页面跳转或请求转发的方式

dy051107的博客 1770

RPA实战-UiPath自动化处理Outlook邮件附件全流程解析

本文详细解析了如何使用UiPath实现Outlook邮件附件的自动化处理全流程,涵盖环境配置、核心流程实现、高级功能扩展及性能优化技巧。通过RPA技术,企业可大幅提升邮件附件处理效率,减少人工操作错误,适用于财务、物流等多个场景。

weixin_33701251的博客 428

Halcon手眼标定实战:九点标定法从入门到精通(附完整代码)

本文详细介绍了Halcon环境下九点标定法的完整实现流程,从基础概念到实战技巧,帮助开发者快速掌握手眼标定技术。通过精确采集图像坐标与机械坐标,计算仿射变换矩阵,实现相机与机械臂坐标系的精确映射,适用于工业自动化中的平面定位场景。

v4w5x6的博客 411

struts2 result type=(chain、dispatcher、redirect、redirect-action)

(1)type="dispatcher" 为默认,用于jsp页面跳转 &lt;result name="success"&gt;/index.jsp&lt;/result&gt;  完整的写法为:  &lt;result name="success" type="dispatcher"&gt;       &lt;param name="

chtx87_98的博客 319

一文读懂GPU通信互联技术:GPUDirect、NVLink与RDMA

GPUDirect是NVIDIA开发的一项技术,旨在实现GPU与其他设备(如网络接口卡NIC和存储设备)之间的直接通信和数据传输,而无需CPU的参与。传统上,数据在GPU和另一个设备之间传输时,必须通过CPU,这导致潜在的性能瓶颈和延迟增加。GPUDirect技术则通过绕过CPU,直接访问和传输数据,显著提高系统性能。NVLink是NVIDIA开发的一种高速、高带宽的互连技术,用于连接多个GPU之间或GPU与其他设备(如CPU、内存等)之间的通信。

异构算力老群群(在读985计算机博士生)的技术博客 7775

struts2中的跳转详解 ----“请求转发”和“重定向”之间的区别

Struts2的ResultType和Action处理链  Struts2的结果类型 在struts-default.xml中定义了Struts2内置的所有可用的 所有的Struts2结果处理类都要直接或间接的实现com.opensymphony.xwork2.Result接口 在struts-default.xml中的里面,有这样一行声明 Deprecated name form

yonglongwang的专栏 2687

LC整流滤波电路DIY:电感电容配合,手把手搭建低纹波直流电源

在直流电源设计中,整流滤波是连接交流输入与稳定输出的关键环节。常见的电容滤波虽然简单,但在大负载下纹波抑制能力有限,电感抵抗电流突变、电容抵抗电压突变,二者组合构成的LC滤波能有效降低输出电压纹波,同时减小开机浪涌电流。在工频线性电源、功放电源等对噪声敏感的场景中,LC滤波常作为稳压前的平滑缓冲。本文以一套完整DIY项目为线索,介绍整流桥后串联功率电感、并联滤波电容的电路构成,结合实际计算与波形测试,讨论电感量估算、电容选取、谐振风险、饱和电流等工程问题,并给出上电测试和故障排查方法。通过搭建与调试,可直观

weixin_29168813的博客 378

glibc手动升级高版本导致系统(RedHat/Centos)异常(无法开机等)的解决方法(回退低版本glibc)

我的系统是Redhat7.6, 理论上Redhat7/Centos7都可以使用该方法解决问题。 首先慎重提醒各位:glibc升级会产生无法预料的后果!由于Android NDK需要高版本的glibc才可以使用,所以作死手动去更新了glibc2.18,使得重启系统后图形界面消失。(Redhat/Centos升级此类安装包最好用yum升级,因为系统内的程序对他们的依赖很大,升级会导致大部分程序无法使用...

weixin_42881528的博客 9698

Struts2中的Action的访问方式及跳转

 简要描述Struts2中的Action的访问方式及跳转,在struct.xml中进行配置,用返回值来决定要跳转的界面 &lt;%@ page language="java" contentType="text/html; charset=UTF-8"     pageEncoding="UTF-8"%&gt; &lt;!DOCTYPE html&gt; &lt;html&gt; &lt;

咖喱辣椒 2424

13、使用 Mathematica 撰写文本

本文详细介绍了如何使用 Mathematica 进行文本撰写与处理。内容涵盖文本输入、格式设置、结构化排版、超链接插入、翻译与拼写检查工具的使用,以及将笔记本导出为多种格式(如 PDF、HTML、LATEX 和 RTF)的方法。通过实例演示了创建专业文档的完整流程,包括样式设置、公式推导、标题编号、页眉页脚配置等操作。适合希望利用 Mathematica 编写学术论文、技术报告或教学资料的用户参考。

sony5的博客 208

Struts2之Action跳转

[整理]在struts2.0中 action跳转 在struts2.0中 action跳转有两种方式,特别要指出的是仅在同一package范围内生效。不同Package的Action跳转使用param参数即可。 第一种通过action 转接 第二种为action链方式。 方法一: 1. 设置type="redirect"     action name   /ind

loganyang123的专栏 726

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Struts2 跳转

** struts2 跳转 ** Action跳转到jsp forward 默认的跳转方式 type=“dispatcher” <result name="返回值“ type="dispatcher">/跳转的jsp名</result> redirect重定向默认跳转方式 type=“redirect” <result name=”返回值” type=...

qq_40804301的博客 261

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Struts2之跳转页面

1. 写一个简单,负责跳转到请求页面的Action 作用:比如点击一个 超链接“index.jsp”,Struts2拦截到该index.jsp请求,通过该Action处理后,又要回到"index.jsp"页面。 代码: public class SimpleViewResultAction { public String execute() { String ur

IT一分子 2113

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Struts2中的跳转、package标签、挎包重定向、全局跳转

1、struts.xml文件中使用package标签的好处: 1、对Action标签进行分门别类的管理,将同1个功能模块的Action放在同一个package标签下。提高了项目后期的可维护性。 2、重用功能 extends用于继承一个父包,默认继承父包的配置。 A) namesapce属性【实战:必须添加namespace】 作用:在访问action时,路径必须添加namesapce的值,那么...

Java开发,人工智能,边缘计算,致力于掌握前沿技术 847

Struts2——action间的跳转

有关Struts2中action间的跳转可分为两部分,一部分为同一个包中action间的跳转,还有一个就是在不同包中action间的跳转。不管是不是在同一个包中,首先要明确的是要实现跳转,必须要将result中type属性设为chain或redirectAction。 一、同一个包中的跳转 在Action的results里面的type类型配置为“chain”,跳转的Action的

wangdabin_1216的专栏 947

struts2 action 页面跳转

(1)type="dispatcher" 为默认,用于jsp页面跳转 /index.jsp  完整的写法为:        /index.jsp      (2)type="redirect" 重定向到jsp、action、外部网址 /index.jsp  /login.do  http://www.baidu.com   重定向时带参数处理方法: 1.type="r

zdnlp的专栏 4万+

Struts2中的页面跳转

一、全局页面的设置 如果包中的一些action都返回success,并且返回的页面都是同一个JSP页面,这样就可以配置全局的结果页面。 全局结果页面针对的当前的包中的所有的Action,但是如果局部还有结果页面,会优先局部的。 设置全局页面的标签是                             /demo/suc.jsp             局部结果页面    

想作会飞的鱼的博客 3273

struts2 action以及页面跳转

struts2 action之间以及页面之间的跳转

PrayAllForYou 1884

Struts2 中action 间的跳转

有关Struts2中action间的跳转可分为两部分: 1、同一个包中action间的跳转 2、不同包中action间的跳转 不管是不是在同一个包中,首先要明确的是要实现跳转,必须要将result中type属性设为chain或redirectAction。  一、同一个包中的跳转  在Action的results里面的type类型配置为“chain

LeefengBoy的博客 753

struts2的校验跳转

<br />   ORDER项目,struts2表单使用validation框架进行校验,有错误信息时需要在当前表单提交页面把错误信息打出来,本来是很简单的一个需求,在这次使用struts2中却出现了出乎意料的错误。<br />现象如下:<br />   通过test1Action查询数据后进入a页面,a页面的表单提交到test2Action,出错后回到a页面显示错误信息,在这个Action的配置中input时,指到一个jsp,结果虽然进入了a页面,但是在test1Action中查询到的数据全部没有。<br

归零生活 1996

怎么用backurl跳转_页面跳转到BackURL功能(基于struts2实现)

首先,我们知道,struts2和struts1的一个重要区别就是它进行了Action类和Servlet的解耦。而又提供了获取Servlet API的其它通道,就是ActionContext(别跟我说还有个ServletActionContext,其实ServletActionContext只是ActionContext的一个子页面跳转到BackURL功能(基于s...

weixin_39759060的博客 1306

Struts2的跳转

Action跳jsp默认Forward跳转 Redirect跳转Action跳Action没有默认必须声明类型。 Forward跳转 Redirect跳转 包 作用:使配置文件当中的配置信息模块化,便于配置信息的管理 语法: 命名空间 namespace 作用:使用户的请求模块化,便于随后过滤器的使用 跨包间的跳转全局跳转 作用:当许

难不难的博客 593

Struts2.x 跳转配置

在Sturts2.x里面所有的跳转都是由Action进行的,而且只要想进行跳转,只需要在相应的方法里面返回指定的字符串即可,而这些字符串都会在Struts.xml文件里面出现相应的"<result>"节点 范例:观察已有代码 @Override public String execute() throws Exception {//执行操作 this.ms...

抛弃幻想,准备斗争 415
上一篇: android 古怪问题解决集合
下一篇: APK签名
聪明叔
博客等级 码龄22年 20粉丝 13原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值