`
zds420
  • 浏览: 203786 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论

Struts2的动态方法调用

 
阅读更多

Struts2的动态方法调用


在struts2中,可以通过两种方式调用Action类的除了execute之外的其他方法。而这种方法是struts框架直接支持的。


方式1:struts.xml中的action的属性为method


  <?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>
	<!-- 
    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="false" />

    <package name="default" namespace="/" extends="struts-default">

        <default-action-ref name="index" />

        <global-results>
            <result name="error">/error.jsp</result>
        </global-results>

        <global-exception-mappings>
            <exception-mapping exception="java.lang.Exception" result="error"/>
        </global-exception-mappings>

        <action name="index">
            <result type="redirectAction">
                <param name="actionName">HelloWorld</param>
                <param name="namespace">/example</param>
            </result>
        </action>
    </package>

    <include file="example.xml"/>
 	-->
    <!-- Add packages here -->
	<!-- 
	<package name="default" namespace="/" extends="struts-default">
		<action name="helloworld">
			<result>/helloworld.jsp</result>
		</action>
	</package>
	-->
	<!--  使用Action 的三种方式,在企业最常用的是继承ActionSupport类 -->
	<package name="default" namespace="/action" extends="struts-default">
		<action name="test01" class="com.demo.action.DemoAction01">
			<result name="success">/action01.jsp</result>
		</action>
		<action name="test02" class="com.demo.action.DemoAction02">
			<result name="success">/action02.jsp</result>
		</action>
		<action name="test03" class="com.demo.action.DemoAction03">
			<result name="success">/action03.jsp</result>
		</action>
	</package>
	
	
	<!--  注意:在struts配置中 package包的name属性名称不能相同 -->
	<package name="dmi_pack" namespace="/dmi" extends="struts-default">
		<action name="add" class="com.demo.action.DMIActionDemo" method="add">
			<result name="add">/add.jsp</result>
		</action> 
		
		<action name="edit" class="com.demo.action.DMIActionDemo" method="edit">
			<result>/edit.jsp</result>
		</action>
		<action name="delete" class="com.demo.action.DMIActionDemo" method="delete">
			<result>/delete.jsp</result>
		</action>
		<action name="query" class="com.demo.action.DMIActionDemo" method="query">
			<result>/query.jsp</result>
		</action>
	</package>
	
	<!-- 动态方法调用 -->
	<package name="dmi_method" namespace="/dmi_method" extends="struts-default">
		<action name="dmiMethod" class="com.demo.action.DMIAction" >
			<result name="success">/result.jsp</result>
		</action>  
	</package>
	 
	
</struts>

 

 

   package com.demo.action;

import com.opensymphony.xwork2.ActionSupport;

public class DMIActionDemo extends ActionSupport {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public String add() {
		
		System.out.println("===========添加操作=========");
		System.out.println("===========添加数据=========");
		return "add";
	}
	
	public String edit() {
		System.out.println("===========编辑操作=========");
		System.out.println("===========编辑数据=========");
		return SUCCESS;
	}
	
	public String delete() {
		System.out.println("===========删除操作=========");
		System.out.println("===========删除数据=========");
		return SUCCESS;
	}
	
	public String query() {
		System.out.println("===========查询操作=========");
		System.out.println("===========查询数据=========");
		return SUCCESS;
	}
}
 


方式2:动态调用方法(DMI)

不需要进行struts的配置,直接在视图页面中通过标识符号制定了要调用的方法。标识符号为"!"号。

注意:/名称空间/action名称!操作方法.action

    <a href="/dmi_method/dmiMethod!add.action">添加操作</a>

    <a href="/dmi_method/dmiMethod!edit.action">修改操作</a>

    <a href="/dmi_method/dmiMethod!delete.action">删除操作</a>

    <a href="/dmi_method/dmiMethod!query.action">查询操作</a>

 

     <!-- 动态方法调用 -->

	<package name="dmi_method" namespace="/dmi_method" extends="struts-default">
		<action name="dmiMethod" class="com.demo.action.DMIAction" >
			<result name="success">/result.jsp</result>
		</action>  
	</package>
	
	
 

 

package com.demo.action;

import com.opensymphony.xwork2.ActionSupport;

public class DMIAction extends ActionSupport{
	
	public String add() {
		System.out.println("=======DMI 添加操作");
		return SUCCESS;
	}
	
	public String edit() {
		System.out.println("=======DMI 编辑操作");
		return SUCCESS;
	}
	
	public String delete() {
		System.out.println("=======DMI 删除操作");
		return SUCCESS;
	}
	
	public String query() {
		System.out.println("=======DMI 查询操作");
		return SUCCESS;
	}
}
 
分享到:
评论

相关推荐

    Struts2 动态方法调用(十三)

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

    Struts2动态方法调用

    Struts2作为一款流行的Java Web框架,其动态方法调用(Dynamic Method Invocation,DMI)功能为开发者提供了极大的灵活性。在传统的MVC模式中,控制器(Controller)通常通过硬编码的方式处理请求,而动态方法调用则...

    struts2 动态方法调用(DMI)

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

    Struts2_动态方法调用

    Struts2_动态方法调用,使用struts2架构的动态方法进行资源调用

    详解Struts2动态方法调用

    Struts2 动态方法调用详解 Struts2 框架提供了动态方法调用的机制,允许一个 Action 对应多个请求,从而减少 Action 的数量。这种机制可以提高系统的灵活性和可维护性。 方法一:指定 Method 属性 在 Struts2 中...

    struts2中动态方法的调用

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

    struts2动态方法配置

    Struts2动态方法调用是该框架的一个重要特性,它允许开发者通过URL直接映射到Action类中的方法,而不仅仅是类。这种灵活性极大地增强了应用程序的可扩展性和可维护性。在Struts2中,动态方法调用是通过ActionMapper...

    struts 2 action 动态调用

    ### Struts 2 Action 动态方法调用详解 #### 一、引言 在Struts 2框架中,Action动态方法调用是一项非常实用的功能。它允许开发者在一个Action类中定义多个处理方法,而不仅仅局限于传统的`execute()`方法。这种...

    struts2动态访问调用-method方法

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

    struts2动态调用之通配符

    通配符动态调用是Struts2动态调用的一种进阶形式,它的主要优点在于减少重复配置。传统的动态调用可能需要为每个method写一条配置,例如: ```xml *" class="com.example.UserAction"&gt; &lt;result type="dispatcher"&gt;...

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

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

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

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

    struts2的学习笔记+测试源代码

    压缩包文件`struts2_5_dynamicRequestMethod`很可能包含了与Struts2动态方法调用相关的示例代码和测试用例。这些源代码可能展示了如何配置Struts2的配置文件以支持动态方法调用,以及如何在Action类中定义对应的方法...

    struts2 经典案例。运行调试通过,代码规范全解析。

    三、Struts2动态方法调用 Struts2支持动态方法调用,即可以根据请求参数动态决定Action中的执行方法,无需在struts.xml中显式列出所有方法。 四、Struts2结果类型 1. Forward:将控制权转发到另一个页面。 2. ...

    Struts2之异步调用机制详解案例struts014

    在Struts2中,异步调用机制是实现页面动态更新和提高用户体验的关键技术之一。这个案例“struts014”很可能展示了如何在Struts2中实现异步调用来处理耗时操作,如数据库查询或复杂计算。 异步调用的基本概念是,...

    Struts2中直接和间接访问ServletAPI以及动态方法调用之感叹号

    在Struts2框架中,直接和间接访问Servlet API以及动态方法调用是两个关键概念,它们对理解和优化应用性能至关重要。 首先,让我们深入理解直接访问Servlet API。在传统的MVC模式中,Servlet扮演着控制器的角色,...

    blog(struts2+hibernate3)

    Struts2 支持动态方法调用,这意味着你可以通过 URL 直接调用 Action 类的方法,无需预先在配置文件中硬编码。这种灵活性使得应用的扩展性更强。 **4. Struts2 结合 Hibernate3** Hibernate3 是一个流行的 Java ORM...

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

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

Global site tag (gtag.js) - Google Analytics