`
左手边
  • 浏览: 96933 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2根据action中的方法参数值来动态调用方法

 
阅读更多

struts2 根据action中的方法参数值来动态调用方法,例如http://localhost:8080/login.do?method=dynamicMethod

根据method参数来调用action中的dynamicMethod 方法,主要是自定义拦截器来实现,代码如下

package com.tedonl.interceptor;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class DynamicMethodInterceptor extends AbstractInterceptor {

	private static final long serialVersionUID = -2341874790105032740L;

	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		HttpServletRequest request = ServletActionContext.getRequest();
		String myMehtod = request.getParameter("mehtod");
		if (myMehtod != null) {
			try {
				java.lang.reflect.Method method = invocation.getAction().getClass().getMethod(myMehtod);
				String result = (String) method.invoke(invocation.getAction());
				if (result != null) {
					return result;
				} else {
					return null;
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return invocation.invoke();
	}

}

 然后在web.xml中配置上自己的拦截器即可

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
	<package name="login" namespace="/login" extends="json-default">
		<interceptors>
			<interceptor name="MyInterceptor" class="com.tedonl.interceptor.DynamicMethodInterceptor"></interceptor>
			<interceptor-stack name="MyDefaultStack">
				<interceptor-ref name="MyInterceptor" />
				<interceptor-ref name="defaultStack"></interceptor-ref>
			</interceptor-stack>
		</interceptors>
		<default-interceptor-ref name="MyDefaultStack"></default-interceptor-ref>
		<action name="login" class="loginAction">
			<result name="success">/index.jsp</result>
			<result name="index">/index.jsp</result>
			<result name="conmpanyTrain">/companyTrain/sec_companyTrain.jsp</result>
		</action>

		<action name="register_*" class="registerAction" method="{1}">
			<result name="success" type="json" />
		</action>
	</package>
</struts>
 
1
1
分享到:
评论

相关推荐

    Struts2动态方法调用

    在Struts2中,JavaScript可以用来发起Ajax请求,动态调用后台Action的方法。例如,我们可以使用jQuery的`$.ajax`或`$.post`方法,配合Struts2的ActionContext,将请求参数传递给服务器。在服务器端,Struts2会解析...

    Struts2 动态方法调用(十三)

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

    struts 2 action 动态调用

    在Struts 2中,动态方法调用是指通过配置文件指定Action类中的特定方法来响应不同的用户请求。默认情况下,Struts 2框架会查找并调用名为`execute()`的方法。但是,我们可以使用`&lt;action&gt;`元素中的`method`属性来...

    struts2 action跳转action传参数

    ### Struts2中Action间的参数传递方法 在Struts2框架中,经常需要实现Action之间的跳转,并在跳转过程中传递必要的参数。这种需求在实际开发中非常常见,尤其是在需要根据用户的不同操作来调用不同的业务逻辑时。...

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

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

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

    在 Struts2 中,我们可以使用不同的方式来动态调用 Action 的指定方法,例如使用表单提交、struts.xml 配置、通配符方法等方式。此外,我们还可以配置默认的 Action 和全局结果,以便更好地管理我们的应用程序。

    struts2中动态方法的调用

    在Struts2中,动态方法调用基于Action类中的方法名与URL中的参数相匹配的原则。当一个请求到达时,Struts2会解析URL中的方法名(通常是通过在Action名称后加上“!”符号后跟的方法名),然后在对应的Action类中查找...

    struts2动态访问调用-method方法

    在URL请求中,我们可以传递一个名为`method`的参数,Struts2会根据这个参数值来寻找并执行相应的方法。例如,访问`http://example.com/multiMethodTest.action?method=executeMethod2`,Struts2就会调用`...

    Struts2 Action参数详细说明

    在Struts2中,Action的配置和使用方式有多种,下面将详细介绍Struts2 Action参数的详细说明。 首先,我们来看Action的配置格式。在Struts2的配置文件(通常是struts.xml)中,Action的基本配置结构如下: ```xml ...

    JS调用Struts中的Action

    当开发者希望实现从前端JavaScript直接调用后端Struts中的Action时,就需要了解如何正确地设置请求路径以及传递参数的方式。 #### 关键知识点解析 ##### 1. **理解Struts Action** 在Struts框架中,Action是模型...

    struts2的API耦合与动态方法调用

    本文将重点讨论Struts2中的API耦合和动态方法调用,这两种特性对于理解框架的工作原理和提高代码的灵活性至关重要。 首先,我们来看看Struts2 API耦合的几种方式: 1. **ActionContext类**:ActionContext是Struts...

    struts2 动态方法调用(DMI)

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

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

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

    struts2 对action中的所有方法进行校验

    对于动态或者复杂的数据校验需求,Struts2允许在运行时根据不同的请求参数选择不同的校验规则。这可以通过在validate()方法内进行条件判断来实现。 4. 国际化: Struts2支持国际化校验错误消息,只需在资源文件...

    Struts2--为Action的属性注入值

    动态方法调用允许我们不指定具体的execute方法,而是根据请求参数自动调用Action中的方法。类型转换则是指Struts2能够自动将请求参数的字符串值转换为Action属性所需的类型,如将`age`的字符串值转换为整型。 为了...

    struts2中Action获取参数的3种方式代码

    本文将详细介绍Struts2中Action获取参数的三种主要方式,并通过实际代码示例来阐述每种方法的使用。 1. **通过getter和setter方法获取参数** 这是最常见的方式,Struts2会自动将请求参数与Action类的属性进行匹配。...

    struts2支持方法上传递参数

    下面将详细介绍Struts2中如何实现方法上传递参数以及相关知识点。 首先,Struts2的核心是Action类,它是处理用户请求的中心。在Action类中定义的方法通常对应于用户的操作,每个方法可以接收一个或多个参数。当用户...

    struts2动态调用之通配符

    本文将深入探讨Struts2中的动态调用之通配符特性。 首先,我们要理解在Struts2中,动态调用的基本概念。它允许我们不在配置文件中为每个Action的每一个method单独指定一个URL,而是通过某种约定或规则来映射多个...

    struts2一个action处理多个请求 struts2实例

    在Struts2的配置文件(通常为struts.xml或struts.properties)中,我们定义Action的映射规则,包括请求路径、方法调用以及结果视图等。默认情况下,一个Action类对应一个请求URL,但通过特定配置,可以让一个Action...

    struts2实验一:动态方法调用+请求参数的获取+简单的表单数据验证

    在Struts2中,动态方法调用是其一大特性,允许开发者通过URL直接调用Action类中的方法。默认情况下,Struts2会尝试将Action类的公共方法与请求路径关联,如果请求路径与Action类的方法名匹配,那么这个方法就会被...

Global site tag (gtag.js) - Google Analytics