`

Struts2_ActionMethod_DMI_动态方法调用

阅读更多
动态的方法调用:DMI
在form的action中使用动态的方法调用。action="xxx!xxx.action",第一个xxx是action中的调用的方法,和execute一样的。后面一个是所请求的action,两个可以不相同
如hello!login.action  这样子可以减少很多action的配置

另外一种方式是在struts.xml文件中加入method的方式调用,但是需要很多的action配置

另外一种方式是使用通配符的方式,在action的配置文件中使用*xxxx或者xxxx*,然后在method中写method="{1}",在form的action中写xxxxxx,则action类中的方法名对应于xxxxxx中的名字。如helloLogin
则hello对应到action类中的方法,login则是请求的action
<?xml version="1.0" encoding="GB18030" ?>
<%@ page language="java" contentType="text/html; charset=GB18030"
    pageEncoding="GB18030"%>

<% String context = request.getContextPath(); %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030" />
<title>Insert title here</title>
</head>
<body>
Action执行的时候并不一定要执行execute方法<br />
可以在配置文件中配置Action的时候用method=来指定执行哪个方法
也可以在url地址中动态指定(动态方法调用DMI)(推荐)<br />
	<a href="<%=context %>/user/userAdd">添加用户</a>
	<br />
	<a href="<%=context %>/user/user!add">添加用户</a>
	<br />
前者会产生太多的action,所以不推荐使用
	
</body>
</html>


<?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.devMode" value="true" />
    <package name="user" extends="struts-default" namespace="/user">
        <action name="userAdd" class="com.hugui.struts2.user.action.UserAction" method="add">
            <result>/user_add_success.jsp</result>
        </action>
        
        <action name="user" class="com.hugui.struts2.user.action.UserAction">
            <result>/user_add_success.jsp</result>
        </action>
    </package>
</struts>



package com.hugui.struts2.user.action;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {
	public String add() {
		return SUCCESS;
	}
	
	
}

分享到:
评论

相关推荐

    Struts2_0400_Path.rar_struts2_0400_Path

    5. 动态方法调用(Dynamic Method Invocation,DMI):允许通过URL直接调用Action类的方法,但在某些情况下可能会带来安全隐患。 通过深入研究"Struts2_0400_Path"中的资料,你可以掌握如何有效地配置Struts2的路径...

    Struts2 动态方法调用(十三)

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

    struts2 动态方法调用(DMI)

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

    Struts2_API.rar_API_struts2_struts2 api_struts2 api chm_struts2文

    10. **动态方法调用(Dynamic Method Invocation,DMI)**:允许通过URL直接调用Action的方法,增强了路由的灵活性。 总的来说,Struts2 API文档是学习和掌握Struts2框架不可或缺的资源,无论你是初学者还是经验丰富...

    struts2_DMI代码

    5. **动态方法调用(DMI)**:在某些情况下,Action名称可以根据用户输入动态生成,这称为动态方法调用。例如,`&lt;action name="!*" class="com.example.MyAction" method="{1}"&gt;`允许用户通过URL中的部分来决定调用...

    Struts2动态方法调用

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

    Struts2_Introduction

    - 动态方法调用(Dynamic Method Invocation,DMI)是一个可选特性,通过设置`struts.enable.DynamicMethodInvocation`为`true`来启用,允许使用方法名作为URL的一部分。 3. **测试项目**: - 在浏览器中访问`...

    Struts2_0500_ActionMethod.zip_Java编程_Java_

    Struts2还支持动态方法调用(Dynamic Method Invocation,DMI),这意味着你可以在URL中直接指定Action方法,而不必在配置文件中显式声明。尽管这种方法在某些情况下可以提高灵活性,但可能导致代码的可读性和可维护...

    struts2_3000_BBS2009_02.rar

    2. **动态方法调用(Dynamic Method Invocation,DMI)**:不同于Struts1中的固定Action映射,Struts2支持直接通过URL调用Action方法,提高了路由的灵活性。 3. **OGNL(Object-Graph Navigation Language)**:这是...

    struts2_path代码

    总结来说,"struts2_path"代码示例涵盖了Struts2中Action的配置、动态方法调用、拦截器的使用以及命名空间的应用。这些都是理解和开发Struts2应用的基础,对于初学者而言,通过实践这些代码,可以深入理解Struts2的...

    struts-ex-coding.rar_ex

    4. **struts2_04_action_dmi.rar** - "DMI"可能指的是动态方法调用,Struts2的一个特性,允许不预先配置Action方法就能进行调用,增强了灵活性。 5. **struts2_05_action_param.rar** - 这部分可能讲解了如何从请求...

    Struts2_note

    以上就是关于Struts2框架的关键知识点的详细介绍,涵盖了开发模式、源码查看、配置、执行流程、命名空间、编码设置、路径处理、动态方法调用、数据传输、国际化、标签库、控制反转和依赖注入,以及Action结果的处理...

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

    接下来,我们探讨Struts2的动态方法调用(Dynamic Method Invoked,DMI): 动态方法调用是Struts2的一种强大功能,它允许根据不同的用户请求动态决定执行哪个Action方法。主要有以下两种方式: 1. **基于struts....

    Struts2 Action参数详细说明

    动态方法调用(Dynamic Method Invocation, DMI)是Struts2提供的一种简化配置的方式。通过DMI,我们可以在URL中直接指定要调用的方法,而无需为每个方法创建单独的Action配置。配置示例如下: ```xml &lt;action name...

    struts2-core-2[1].0.11.zip_struts2 2.0.11.2_struts2 core

    10. **动态方法调用(Dynamic Method Invocation,DMI)**: 允许Action的执行方法不固定为execute,而是根据请求参数动态决定。 总的来说,理解和掌握Struts2的核心概念和机制对于开发高效的Java Web应用至关重要。...

    strust2的各种学习例子

    7. **动态方法调用(Dynamic Method Invocation,DMI)**:Struts2允许通过URL直接调用Action类的方法,提高灵活性。struts2_e19可能包含关于DMI的示例。 8. **插件(Plug-ins)**:Struts2支持丰富的插件,如 ...

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

    Struts2的一个强大特性是其支持动态方法调用(Dynamic Method Invocation,DMI),这是通过URL中的"!"符号实现的。当URL中包含"!"时,Struts2会尝试解析该字符串,寻找Action类中与之匹配的方法。这种方式允许我们...

    Struts2登陆+输入验证+动态调用实例

    Struts2的动态方法调用(Dynamic Method Invocation,DMI)允许我们根据用户输入来决定执行哪个Action方法。在没有明确的方法名时,Struts2会尝试匹配Action类中的方法。这种方式增加了代码的灵活性,但同时也可能...

    共享Struts2的一些资源

    `struts2_in_action.pdf`可能是一本关于Struts2的实战指南,通常会涵盖Struts2的基本概念、配置、拦截器、结果类型、动态方法调用等特性。这本书可能会帮助读者深入理解Struts2框架,并提供实际项目中的应用示例。 ...

    传智播客struts2.1视频教程_源代码_Action名称的搜索顺序

    3. **动态方法调用(Dynamic Method Invocation,DMI)**:如果配置文件中也没有通配符匹配,Struts2会尝试使用动态方法调用来解析Action。它将URL中的部分作为Action类的方法名进行调用。比如,URL为`/myMethod/...

Global site tag (gtag.js) - Google Analytics