`
星夜的遐想
  • 浏览: 190565 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Struts2中一个Action转到另一个Action以及传参的问题

阅读更多

在WEB的开过程中,我们在使用Struts2中Action完成业务逻辑时,可能存在这样一种情况,我们需要自当前的Aciton中方法执行后,在跳到另一个Action中并动态调用其中某个方法,这我们如何实现呢?我们来看下面这个例子。

如有这样一个要求,就是从首页(index.jsp)输入用户名( uname1)和密码(pwd1)后,在经过第一个Aciton完成处理后,在传到第二个Aciton继续处理,处理完成后再到指定的页面显示。

 

 

首先看我们的index.jsp页面:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags"  prefix="s"%>

<html>
  <head>
  </head>
  
  <body>
   <form action="acion1" method="post">
   		用户名:<input type="text" name="uname1"/><br>
   		密&nbsp;码:<input type="text" name="pwd1"/><br>   		
   		<input type="submit" value="提交" />
   </form>
  </body>
</html>

 

 

 

因为没有指定调用哪个方法,因此会执行Aciton1中的Execute()方法

 

Action1.java:

package com.lyl.struts2;

import com.opensymphony.xwork2.ActionSupport;

public class Action1  extends ActionSupport{

	
	private String method;
	
	private String uname1;
	private String pwd1;
	private String uname1Andpwd1;
	public String getUname1() {
		return uname1;
	}
	public void setUname1(String uname1) {
		this.uname1 = uname1;
	}
	public String getPwd1() {
		return pwd1;
	}
	public void setPwd1(String pwd1) {
		this.pwd1 = pwd1;
	}
	public String getUname1Andpwd1() {
		return uname1Andpwd1;
	}
	public void setUname1Andpwd1(String uname1Andpwd1) {
		this.uname1Andpwd1 = uname1Andpwd1;
	}
	public String getMethod() {
		return method;
	}
	public void setMethod(String method) {
		this.method = method;
	}
	
	
	@Override
	public String execute() throws Exception {
		
		System.out.println("--------------------------");
		
		 this.pwd1=this.getPwd1()+"----action1";
		 this.uname1=this.getUname1()+"----action1";
		 setUname1Andpwd1(this.uname1+this.pwd1);
		return SUCCESS;
	}

	
}

 

下面看下配置文件:

 

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
    
<struts>

	<!-- 
		include标签:导入其它的配置文件(代码重用)
	-->
	<include file="struts-default.xml" />

	<!-- 
		package:划分项目模块
		
		name:包名
		abstract:true抽象包(不能包action标签),
				 false非抽象包
		extends:指定父包
		namespace:命名空间(必须/开头)
		
		子控制器路径=命名空间+"/"+子控制器的名字+".action"
		子控制器路径=命名空间+"/"+子控制器的名字+"!方法名.action"//动态方法调用
	-->
	
	<package name="struts2" extends="struts-default">
		
		<!-- 
			action标签:定义子控制器
			name:子控制器名字
			class:子控制器完整类名
		-->
		<action name="acion1" class="com.lyl.struts2.Action1">
			<result name="success" type="redirectAction">
				<!-- 将重定向到actionName指向的action -->
				<param name="actionName">action2</param> <!-- 通过ationName指定要转向的Action -->
				<param name="method">myMethod</param><!-- 通过method指定Action2执行的方法 -->
				<param name="uname2">${uname1}</param><!-- 取得Action1中的的uname1赋值给Action2的uname2属性 -->
				<param name="pwd2">${pwd1}</param>
				<param name="uname2Andpwd2">${uname1Andpwd1}</param>
			</result>
		</action>
		
		<action name="action2" class="com.lyl.struts2.Action2">
			<result name="success">/actionResult.jsp</result>
		</action>
		
		
	</package>

</struts>

 

 

下面看Action2.java

 

package com.lyl.struts2;

import com.opensymphony.xwork2.ActionSupport;

public class Action2 extends ActionSupport {

	
	private static final long serialVersionUID = 1L;
	
	private String uname2;
	private String pwd2;
	private String uname2Andpwd2;
	
	//指定执行的方法
	private String method;
	
	public String getMethod() {
		return method;
	}
	public void setMethod(String method) {
		this.method = method;
	}
	public String getUname2() {
		return uname2;
	}
	public void setUname2(String uname2) {
		this.uname2 = uname2;
	}
	public String getPwd2() {
		return pwd2;
	}
	public void setPwd2(String pwd2) {
		this.pwd2 = pwd2;
	}
	
	
	@Override
	public String execute() throws Exception {
		return SUCCESS;
	}
	
	public String myMethod()
	{
		System.out.println("执行了myMethod的方法");
		
		this.uname2=this.uname2+"----action2";;
		this.pwd2=this.pwd2+"----action2";
		
		return SUCCESS;
	}
	public String getUname2Andpwd2() {
		return uname2Andpwd2;
	}
	public void setUname2Andpwd2(String uname2Andpwd2) {
		this.uname2Andpwd2 = uname2Andpwd2;
	}

	
}

 

 

 

通过配置文件中

 

<param name="method">myMethod</param><!-- 通过method指定Action2执行的方法 -->

 

指定在Action1的execute()方法后将会执行Action2的myMethod()方法,执行后转发到result.jsp页面

 

如下:

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  </head>
  
  <body>
  <center>
	   	uname2:<s:property value="uname2"/><br>
	   	pwd2:<s:property value="pwd2"/> <br>
	   	uname2pwd2:<s:property value="uname2Andpwd2" />	

	 
   	</center>
  </body>
</html>

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Struts2从一个带参数action跳转到另一个action

    资源中示例了一个struts2的配置文件中配置的action的result结果为另外一个action的配置,该跳转的过程中是带所有参赛调整的,在另外一个action中可以接受到当前action的所有参数,此配置文件是我日常开发中的经验...

    Struts2中一个简单的入门实例

    总结起来,这个简单的Struts2入门实例展示了如何创建一个基础的MVC应用:定义Action、配置Action、使用Struts2标签创建视图,以及理解拦截器的工作原理。通过实践这个实例,开发者能够快速掌握Struts2的基本用法,并...

    struts2 result转向到action

    例如,可以配置 Result 来重定向到另一个 JSP 页面或者另一个 Action。 当开发者希望在 Action 之间进行跳转时,而不是简单地跳转到 JSP 页面,就可以使用 `redirect-action` 类型的 Result。这种方式通常用于需要...

    struts2利用通配符调用同一个Action里面不同的方法

    在Struts2中,Action是业务逻辑处理的核心,而通配符的使用则是Struts2框架中一种灵活的配置方式,允许我们以更简洁的方式调用同一个Action中的不同方法。下面我们将深入探讨如何利用Struts2的通配符来实现这一功能...

    struts2入门(传参)

    Struts2是一个强大的MVC(模型-视图-控制器)框架,被广泛应用于Java Web开发。这个入门实例主要关注如何在Struts2中传递参数,实现一个简单的登录功能。在这个过程中,我们将涉及到以下几个核心概念和步骤: 1. **...

    struts2 使用action属性接收中文参数(post提交)

    Struts2是一个流行的Java web框架,它用于构建和维护可扩展、模块化且易于管理的企业级应用程序。在处理用户请求时,Struts2允许开发者通过Action类来接收和处理参数,包括中文参数。当我们需要通过POST方法提交包含...

    去掉.action去掉.do字样 隐藏struts2 URL地址action, strus1的扩展名do也是同理.zip

    本篇文章将详细介绍如何在Struts2中去除.action后缀,以及Struts1中隐藏.do扩展名,使URL更加简洁。 首先,让我们来看看Struts2的情况。在Struts2中,默认情况下,所有的请求都会映射到.action结尾的URL上。为了...

    struts2 action跳转action传参数

    这种方式通常用于重定向到另一个Action。示例代码如下: ```xml &lt;action name="action1" method="" class=""&gt; &lt;result name="success" type="redirectAction"&gt;action2.action &lt;/action&gt; ``` - **解析**: -...

    struts2 向结果传参数

    Struts2支持多种内置结果类型,如`dispatcher`(默认的,用于转发到JSP)、`stream`(用于处理文件下载)和`redirectAction`(用于重定向到另一个Action)。每个结果类型都有其特定的配置方式来传递参数。 1. **在...

    struts2传参

    struts2中使用ognl表达式语言传参的方法,简化操作,通过jsp页面传递到Action中

    Struts 2实战 struts2 in Action

    《Struts 2实战 Struts2 in Action》这本书不仅介绍了Struts 2的基本概念和技术细节,更重要的是,它通过丰富的实战案例帮助读者深入理解框架的工作原理,并掌握了如何高效地利用Struts 2来解决实际问题。...

    多action之间跳转传参问题

    - ActionContext:在Struts2中,每个Action都有一个ActionContext对象,它包含了当前请求的所有信息,包括值栈。我们可以把数据放入ActionContext,然后在其他Action中通过ActionContext获取。 - ModelDriven:...

    一个Action多方法调用的Struts 2的应用程序

    利用Struts 2框架创建一个web项目chap2_e22,实现用户登录过程。具体要求是在loginAction类中分别用login()和registered()处理用户登录和注册的过程,分别创建login.jsp和register.jsp两个页面实现登录和注册的...

    Struts2 in action(struts2实战)

    作为一个基于Action和基于拦截器的框架,Struts2提供了丰富的功能,使得开发者能够构建可维护、可扩展的Web应用。下面我们将深入探讨Struts2的主要特性、工作原理以及如何在实际开发中运用。 1. **核心概念**: - ...

    Struts的小列子三个Action

    2. **配置文件**:`struts-config.xml`是Struts框架的核心配置文件,它定义了Action与请求URL的映射关系,以及Action如何转发到JSP或其它视图。例如,你可以定义如下配置: ```xml &lt;action path="/example1" type=...

    Struts2中struts_xml的Action配置详解

    在这个例子中,`saveUser`是Action的名称,当用户发送一个以`saveUser`为后缀的请求时,Struts2会将该请求映射到`SaveUserAction`类。 `class`属性指定Action的实现类,即处理请求的Java对象。这个类通常需要继承自...

    Struts2 in action中文版+配套源代码

    总的来说,"Struts2 in Action"这本书和其配套的源代码为学习和掌握Struts2框架提供了一个全面的平台,无论你是初学者还是经验丰富的开发者,都能从中受益。通过实践这些示例,你可以更好地理解MVC模式,提升Java ...

    struts2 Action 包 命名空间 servlet API

    Struts2是一个强大的Java web应用程序框架,它基于MVC(模型-视图-控制器)设计模式,用于构建高效、可维护的web应用。Struts2是Struts1.x和WebWork社区合作的产物,它的核心设计与Struts1.x有很大的不同,更倾向于...

    一个struts2的例子:彻底解决STRUTS2 错误There is no Action mapped for namespace / and action name login

    前几天在网上下载一个struts2的helloword的例子,那个作者也真够缺德的,搞个错误的程序,害得我查了一天的程序错误。 最后发现竟然是struts.xml被写成啦sturts.xml。 碰见这样的问题先鄙视下提供例子的作者, 再...

    Struts 2实战 Struts 2 in action 的中文版

    - **定义与背景**:Struts 2是一个基于Java的开源Web应用框架,继承了Struts 1的优点并进行了大量的改进与优化。它支持多种编程模型,并且易于与其他框架(如Spring、Hibernate等)集成。 - **MVC架构**:Struts 2...

Global site tag (gtag.js) - Google Analytics