在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>
密 码:<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的result结果为另外一个action的配置,该跳转的过程中是带所有参赛调整的,在另外一个action中可以接受到当前action的所有参数,此配置文件是我日常开发中的经验...
总结起来,这个简单的Struts2入门实例展示了如何创建一个基础的MVC应用:定义Action、配置Action、使用Struts2标签创建视图,以及理解拦截器的工作原理。通过实践这个实例,开发者能够快速掌握Struts2的基本用法,并...
例如,可以配置 Result 来重定向到另一个 JSP 页面或者另一个 Action。 当开发者希望在 Action 之间进行跳转时,而不是简单地跳转到 JSP 页面,就可以使用 `redirect-action` 类型的 Result。这种方式通常用于需要...
在Struts2中,Action是业务逻辑处理的核心,而通配符的使用则是Struts2框架中一种灵活的配置方式,允许我们以更简洁的方式调用同一个Action中的不同方法。下面我们将深入探讨如何利用Struts2的通配符来实现这一功能...
Struts2是一个强大的MVC(模型-视图-控制器)框架,被广泛应用于Java Web开发。这个入门实例主要关注如何在Struts2中传递参数,实现一个简单的登录功能。在这个过程中,我们将涉及到以下几个核心概念和步骤: 1. **...
Struts2是一个流行的Java web框架,它用于构建和维护可扩展、模块化且易于管理的企业级应用程序。在处理用户请求时,Struts2允许开发者通过Action类来接收和处理参数,包括中文参数。当我们需要通过POST方法提交包含...
本篇文章将详细介绍如何在Struts2中去除.action后缀,以及Struts1中隐藏.do扩展名,使URL更加简洁。 首先,让我们来看看Struts2的情况。在Struts2中,默认情况下,所有的请求都会映射到.action结尾的URL上。为了...
这种方式通常用于重定向到另一个Action。示例代码如下: ```xml <action name="action1" method="" class=""> <result name="success" type="redirectAction">action2.action </action> ``` - **解析**: -...
Struts2支持多种内置结果类型,如`dispatcher`(默认的,用于转发到JSP)、`stream`(用于处理文件下载)和`redirectAction`(用于重定向到另一个Action)。每个结果类型都有其特定的配置方式来传递参数。 1. **在...
struts2中使用ognl表达式语言传参的方法,简化操作,通过jsp页面传递到Action中
《Struts 2实战 Struts2 in Action》这本书不仅介绍了Struts 2的基本概念和技术细节,更重要的是,它通过丰富的实战案例帮助读者深入理解框架的工作原理,并掌握了如何高效地利用Struts 2来解决实际问题。...
- ActionContext:在Struts2中,每个Action都有一个ActionContext对象,它包含了当前请求的所有信息,包括值栈。我们可以把数据放入ActionContext,然后在其他Action中通过ActionContext获取。 - ModelDriven:...
利用Struts 2框架创建一个web项目chap2_e22,实现用户登录过程。具体要求是在loginAction类中分别用login()和registered()处理用户登录和注册的过程,分别创建login.jsp和register.jsp两个页面实现登录和注册的...
作为一个基于Action和基于拦截器的框架,Struts2提供了丰富的功能,使得开发者能够构建可维护、可扩展的Web应用。下面我们将深入探讨Struts2的主要特性、工作原理以及如何在实际开发中运用。 1. **核心概念**: - ...
2. **配置文件**:`struts-config.xml`是Struts框架的核心配置文件,它定义了Action与请求URL的映射关系,以及Action如何转发到JSP或其它视图。例如,你可以定义如下配置: ```xml <action path="/example1" type=...
在这个例子中,`saveUser`是Action的名称,当用户发送一个以`saveUser`为后缀的请求时,Struts2会将该请求映射到`SaveUserAction`类。 `class`属性指定Action的实现类,即处理请求的Java对象。这个类通常需要继承自...
总的来说,"Struts2 in Action"这本书和其配套的源代码为学习和掌握Struts2框架提供了一个全面的平台,无论你是初学者还是经验丰富的开发者,都能从中受益。通过实践这些示例,你可以更好地理解MVC模式,提升Java ...
Struts2是一个强大的Java web应用程序框架,它基于MVC(模型-视图-控制器)设计模式,用于构建高效、可维护的web应用。Struts2是Struts1.x和WebWork社区合作的产物,它的核心设计与Struts1.x有很大的不同,更倾向于...
前几天在网上下载一个struts2的helloword的例子,那个作者也真够缺德的,搞个错误的程序,害得我查了一天的程序错误。 最后发现竟然是struts.xml被写成啦sturts.xml。 碰见这样的问题先鄙视下提供例子的作者, 再...
- **定义与背景**:Struts 2是一个基于Java的开源Web应用框架,继承了Struts 1的优点并进行了大量的改进与优化。它支持多种编程模型,并且易于与其他框架(如Spring、Hibernate等)集成。 - **MVC架构**:Struts 2...