`
在水伊方
  • 浏览: 111588 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

Struts2--动态方法调用和使用通配符定义action

阅读更多

struts2中的动态方法调用(Dynamic method Invoc)--2.0后的版本不推荐使用

      struts2中无需配置就可以直接调用Action中非execute方法的方式,就是用struts2的动态方法调用。动态方法调用是在action的名字中使用感叹号(!)来标示要调用的方法名,其语法格式为actionName!methodname.action,例如我们的struts.xml的配置如下: 

<struts>		
	<package name="struts" namespace="/user" extends="struts-default">
		<action name="user" class="com.struts.action.UserAction">
			<result name="success">/WEB-INF/page/message.jsp</result>
		</action>
	</package>			
</struts>  

action中的有如下方法:

	public String addUser() {
		this.message = "addUser";
		return "success";
	}
	
	public String deleteUser() {
		this.message = "deleteUser";
		return "success";
	}

当请求/user!addUser.action时,将调用UserAction的addUser()方法,当请求/user!deleteUser.action时,将调用UserAction的deleteUser()方法。
如果要禁用动态方法调用,则可以在struts.xml配置如下常量

<constant name="struts.enable.DynamicMethodInvocation" value="false" /> 

value的默认值为true。

 

使用通配符定义action

使用通配符..其中的好处就是可以大大减少了配置文件的内容,下面举个例子:

struts.xml中的配置如下:

<struts>		
	<package name="struts" namespace="/user" extends="struts-default">
		<action name="user_*" class="com.struts.action.UserAction" method="{1}">
			<result name="success">/WEB-INF/page/message.jsp</result>
		</action>
	</package>			
</struts>

user_*中的*就是通配符,表示的是可以匹配任意字符,method="{1}"中的{1}就表示的就是*的内容,当然也可以用多个*,比如"*_*", "*_*_*",不过建议不要使用太多的*,这样会降低代码的可读性

 

 action中的方法:

	public String addUser() {
		this.message = "addUser";
		return "success";
	}
	
	public String deleteUser() {
		this.message = "deleteUser";
		return "success";
	}

 当请求/user_addUser.action时,将调用UserAction的addUser()方法,当请求/user_deleteUser.action时,将调用UserAction的deleteUser()方法。

 

 

关于通配符匹配的优先权:

(1)如果struts.xml里面有对应的action name ,就算它有其他通配符匹配的,都优先对应完全相同的。
比如 有一个 action name 是 "user_add"  还有一个是 "user_*"。现在,有一个请求是 "user_add.action ",那么,它会优先匹配"user_add " 。

 

(2)如果一个action name对应于两个带通配符的action name 那么,需要看这个配置谁在前面,它匹配写在前面的
比如 有一个 action name 是 "*_*"  还有一个是 "user_*" ,现在,有一个请求是 "user_add.action ",.那么它会优先匹配写在前面的那个action


(3)任何带"*"的action name 优先权都是一样的,不是说带一个"*"的优先权就比带两个"*" 的高。

 

总结:因此我们应该把具有含有最多通配符的Acton配置放在最后,否则Struts2一一匹配所有的Action,这会降低程序的效率。

1
0
分享到:
评论

相关推荐

    Struts2动态方法调用

    Struts2的配置文件(struts.xml)可以通过通配符来定义Action,使得一个Action能够处理多个方法调用。例如,我们可以定义一个Action,然后使用不同的参数值来调用不同的Action方法。这样可以减少Action的数量,简化...

    struts2动态调用之通配符

    总的来说,Struts2的通配符动态调用是提高开发效率和代码可维护性的利器。通过合理利用这一特性,我们可以减少配置文件的冗余,使项目结构更加清晰,同时也便于扩展和维护。在实际开发中,应熟练掌握并灵活运用这一...

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

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

    Struts2--3.Action及相关-1

    综上所述,这些文件详细阐述了Struts2中Action的使用和相关配置,包括Action的创建、执行方法的指定、路径配置、通配符映射、参数处理、模型驱动以及字符编码等关键概念,为理解和构建基于Struts2的应用提供了坚实的...

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

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

    struts2 通配符配置

    在Struts2中,通配符配置是一项强大的功能,它允许开发者以更灵活的方式定义Action映射,从而提高代码的复用性和配置的简洁性。这篇博客可能详细解释了如何在Struts2框架中使用通配符配置来简化Action配置。 通配符...

    传智播客struts2.1源代码_动态方法

    本文将深入探讨Struts2.1中的动态方法调用和使用通配符定义这两个关键知识点。 首先,让我们理解动态方法调用的概念。在传统的Struts2框架中,Action类的方法与HTTP请求的URL路径直接关联。然而,动态方法调用允许...

    Struts2_Action学习笔记、通配符{1},{2}

    通过上述分析可以看出,Struts2提供了丰富的特性来支持Web应用程序的开发,尤其是通过Namespace和ActionMethod等机制来组织和管理Action,以及利用通配符配置来简化配置文件,大大提高了开发效率和维护性。

    struts2通配符示例代码

    在Struts2的配置中,通配符(Wildcard)的使用是一个非常实用的功能,它使得URL映射更加灵活,减少了重复配置。下面将详细解释Struts2通配符的用法,并结合示例代码进行解析。 1. **Struts2通配符概述** Struts2的...

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

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

    struts2通配符的使用详解

    在Struts2的配置文件`struts.xml`中,可以通过以下方式使用通配符: ```xml &lt;package name="user" extends="struts-default" namespace="/"&gt; &lt;action name="user_*" class=...

    Struts2通配符

    当用户访问`logon.action`时,Struts2框架会自动调用`tutorial.Logon`类的`execute()`方法,并根据返回值来决定执行哪个结果。例如,如果`execute()`方法返回`"input"`,那么框架会渲染`/tutorial/Logon.jsp`页面。 ...

    struts中动态方法调用使用通配符

    动态方法调用是Struts中的一种机制,它允许在不预先定义每个具体方法的情况下,通过Action类的方法名来执行不同的业务逻辑。通常有三种方式实现DMI: 1. 改变表单中`action`属性,使不同的提交按钮对应不同的方法。...

    struts2.5+框架使用通配符与动态方法常见问题小结

    动态方法则是Struts2.5框架中的一种动态调用方法的方式,它允许开发者使用动态调用方法来实现灵活的方法调用。 一、通配符 通配符是Struts2.5框架中的一种强大的功能,它允许开发者使用通配符来指定方法。例如,在...

    struts-ex-coding.rar_ex

    10. **proxyExample.rar** - 这可能是关于Struts2的代理模式,Struts2使用AOP(面向切面编程)来拦截Action的调用,提供拦截器链,以便在执行Action前后插入自定义逻辑。 通过这些示例,开发者可以逐步学习到如何...

    Struts2教学视频

    Struts2支持Action的动态方法调用,允许Action类根据请求参数动态选择要执行的方法,而无需预先在struts.xml中硬编码。 **八、Action通配符(wildcard)的配置** 通配符配置允许为一组相似的Action定义一个通用配置,...

    详解Struts2动态方法调用

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

    struts2 action的三种访问方式

    本篇文章将详细介绍Struts2 Action的三种访问方式:传统方式、通配符方式和动态方式。 1. **传统方式(Static Dispatch)** 传统方式是最基础的Action访问方式,通过硬编码URL来映射Action。在`struts.xml`配置...

    Struts2基础总结-1

    以上内容概括了Struts2框架的基础配置与使用方法,包括环境搭建、配置文件编写、Action的创建和配置、数据获取和封装等方面的知识点。对于初学者来说,理解这些基础知识是非常重要的,它能够帮助开发者快速上手...

Global site tag (gtag.js) - Google Analytics