`

8 动态调用Action与Action中方法(一)

阅读更多

Struts1 提供了DispatchAction 实现一个Action中名含多个业务逻辑

 

现在我们使用Struts2 也可实现现样的效果, 是使用通配符来实现的.

 

struts.xml 文件中,常用

       <action /> 的name , class, method 三个属性都支持通配符

       <resutl/> 也支持通配符

 

<?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>	
	<package name="struts2" extends="struts-default">
		<action name="*Action_*" class="ssh.org.web.{1}Action" method="{2}">
			<result name="success">/user/success.jsp</result>
			<result name="input">/user/user.jsp</result>	
		</action>
	</package>
</struts>

 

 针对上面的配置, 假如我拉的URL 是:http://localhost/struts/UserAction_addUser .action

 

UserAction_addUser 与*Action_* 匹配  , 第一个* 是User, 第二个*是addUser,

 

{1} 的值为 User,  {2}的值为addUser , 区分大小写.

 

class="ssh.org.web.{1}Action"  赋值后是,由User 替代{1}

 

method="{2}" 赋值后是, 由addUser 替代{2}

 

从而实现动态的找到Action 与找个Action中的方法.

 

----------------------------------------------------------------------

 

其中一个Action代码: 类名是UaerAction,   其中有addUser()方法

 

与URL http://localhost/struts/UserAction_addUser .action  相匹配, 模式为*Action_*

 

package ssh.org.web;

import java.util.Date;
import java.util.List;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport
{
	private static final long	serialVersionUID	= 1L;

	private String				username;

	private int					age;

	private Date				birthday;

	private List<String>		aihao;

	public String addUser() throws Exception
	{
		//添加用户
		return "success";
	}

	public void validateAddUser()
	{
		if (null == username || "".equals(username))
		{
			addFieldError("username", "用户名不能为空");
		}
		System.out.println("validateAddUser() 验证方法 ");
	}

	public String getUserList()
	{
		//取得所有用户
		return "success";
	}

	public void validateGetUserList()
	{
		//验证方法略...
		System.out.println("validateAddUser() 验证方法 ");
	}

	public String getUsername()
	{
		return username;
	}

	public void setUsername(final String username)
	{
		this.username = username;
	}

	public int getAge()
	{
		return age;
	}

	public void setAge(final int age)
	{
		this.age = age;
	}

	public Date getBirthday()
	{
		return birthday;
	}

	public void setBirthday(final Date birthday)
	{
		this.birthday = birthday;
	}

	public List<String> getAihao()
	{
		return aihao;
	}

	public void setAihao(final List<String> aihao)
	{
		this.aihao = aihao;
	}
}
 

 

------------------------------------------------------------------

 

<resutl/> 也支持通配符,

 

struts.xml文件 一例子:

 

		<action name="page_*" class="ssh.org.web.HrefAction" >
			<result name="success">{1}.jsp</result>			
		</action>
 

 

 

-----------------------------------------------------------------------

 

最后在说一说优先级的问题

 

通配符 匹配方式 , 当我们写多个<action name="*"  .../>   时, 意思就是 你的URL 可能与多个  <action name="*"  .../>  匹配上,  先执行那一个?

 

答: 按 书写的先后顺序, 先找到哪个, 就执行哪个.

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    struts2笔记之动态调用Action指定方法及默认Action

    那么,在 Struts2 中如何动态调用 Action 的指定方法呢? 首先,我们可以在表单中使用 `&lt;form action="login!register"&gt;` 将表单提交到 LoginAction 的 register() 方法。这是最简单的方式,但是这种方式不够灵活,...

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

    此外,它还支持动态方法调用,即根据请求参数的不同,动态决定执行哪个方法。例如,你可以设置一个`execute`方法来处理默认请求,而其他方法则通过通配符调用。 在实际开发中,我们还可以结合Struts2的拦截器...

    Struts2 动态方法调用(十三)

    在Struts2中,动态方法调用(Dynamic Method Invocation,DMI)是一种特性,允许我们通过URL直接调用Action类的方法,而无需在配置文件中显式指定。这在某些情况下提供了更大的灵活性。 在Struts2的动态方法调用中...

    jsp自动调用action

    这种需求可以通过多种方式实现,其中一种较为常见的做法是利用中间JSP页面来间接调用Action,从而达到自动加载数据的目的。 #### 二、原理及实现步骤 ##### 2.1 原理介绍 在Struts框架中,通常通过配置文件...

    struts 2 action 动态调用

    默认情况下,Struts 2会调用Action类中的`execute()`方法。 2. **Struts.xml**: 这是Struts 2的配置文件,用于配置Action、拦截器等组件。 3. **Interceptors (拦截器)**: 拦截器用于处理Action执行前后的一系列...

    通过表单提交实现调用不同的action方法

    在JSP中,我们可以通过标签库(Tag Library)如JSTL(JavaServer Pages Standard Tag Library)来处理表单数据和调用Action。例如,我们可以使用`&lt;c:choose&gt;`、`&lt;c:when&gt;`等标签进行条件判断,决定调用哪个Action。 ...

    Struts2动态方法调用

    在传统的MVC模式中,控制器(Controller)通常通过硬编码的方式处理请求,而动态方法调用则允许我们动态地决定执行哪个Action的方法。这在处理多样化的用户请求和构建复杂应用时尤其有用。 1. **JS方法调用**: 在...

    struts2 动态方法调用(DMI)

    Struts2 动态方法调用(DMI,Dynamic Method Invocation)是Struts2框架中一个特色功能,允许开发者通过URL直接调用Action类中的方法,而无需预先在配置文件中显式声明这些方法。这种机制增加了开发的灵活性,但也...

    struts2中动态方法的调用

    下面将详细探讨Struts2中动态方法调用的实现机制、配置方式以及应用场景。 ### Struts2动态方法调用的实现原理 在Struts2中,动态方法调用基于Action类中的方法名与URL中的参数相匹配的原则。当一个请求到达时,...

    详解Webwork中Action 调用的方法

    `DefaultActionProxy`内部包含了Action的配置信息,它会创建并初始化`DefaultActionInvocation`,`DefaultActionInvocation`是Action执行过程的具体实现,它会按照配置信息调用Action的方法并处理结果。 - `...

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

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

    C#动态调用DLL并对目标函数传递参数

    6. **传递参数**:动态调用时,`DynamicInvoke`方法接收一个对象数组作为参数,数组中的元素顺序应与目标函数的参数顺序一致。如果目标函数有返回值,`DynamicInvoke`会返回该值。 注意,如果DLL函数使用了非托管...

    struts2动态调用之通配符

    Struts2会根据URL中的部分替换通配符,并尝试调用Action类中的方法。如果找不到与之匹配的方法,Struts2将会回退到默认的执行方法(通常是`execute`)。 为了更高效地利用这一特性,我们需要遵循以下几点: 1. 方法...

    JS调用Struts中的Action

    如果使用表单提交的方式来调用Action,则可以通过表单中的`&lt;input&gt;`标签来传递参数。例如,`&lt;input name="paraName" value="arg0"&gt;`表示传递一个名为`paraName`的参数,其值为`arg0`。 #### 总结 通过JavaScript...

    C#动态获取DLL类库文件中的方法并调用

    在.NET框架中,C#语言提供了强大的反射机制,使得我们能够在运行时动态地获取类型、接口、属性、字段和方法等信息,甚至可以创建对象并调用其方法。本篇文章将详细探讨如何利用C#来动态获取DLL类库文件中的方法并...

    Java动态调用webService,axis2动态调用webService

    总之,动态调用Web Service是Java开发中的一个重要技能,轴线2提供了一个强大而灵活的框架来实现这一功能。`WebServiceInvoker.java`文件的核心就是按照上述步骤实现动态调用的过程,理解其工作原理对于提升Web服务...

    那么action就可以通过该引用值来调用业务类的对象,还有就是在ssh框架中。所有的类都必须通过spring的配置文件进行注册,并获得一个引用值

    sp页面的form表单里面有一个属性值action,当提交jsp页面上的form表单时,系统会根据action的值来找到servlet里面具体的action,(这里的servlet是在web.xml配置文件里面),然后调用action里面的execute()方法,...

    struts2动态访问调用-method方法

    在传统的Struts2配置中,一个Action通常对应一个方法,通过URL路径与Action名进行绑定。然而,当业务需求变得复杂时,这样的设计可能不够灵活。`method`属性的引入,使得我们可以根据用户请求中的参数来决定执行哪个...

    webservice 动态调用

    在C#中,动态调用意味着在运行时创建对象并执行方法,而不是在编译时。这对于处理未知或不固定的Web服务接口特别有用。下面是一步步的实现过程: 1. **导入Web服务引用**:通常,我们会使用`Add Service Reference`...

    C#动态调用webservice(VS2010)

    在.NET框架中,C#是一种常用的编程语言,用于构建各种应用程序,包括Windows桌面应用(如...在VS2010中,动态调用Web服务是实现跨平台通信的一个强大工具,尤其适用于那些无法或不希望使用自动生成的代理类的情况。

Global site tag (gtag.js) - Google Analytics