一。动态方法调用
如果Action中存在多个方法时,我们可以使用!+方法名调用指定方法。如下:
public class HelloWorldAction{
private String message;
....
public String execute() throws Exception{
this.message = "我的第一个struts2应用";
return "success";
}
public String other() throws Exception{
this.message = "第二个方法";
return "success";
}
}
假设访问上面action的URL路径为: /struts/test/helloworld.action要访问action的other() 方法,我们可以这样调用:
/struts/test/helloworld!other.action
通常不建议大家使用动态方法调用,我们可以通过常量struts.enable.DynamicMethodInvocation关闭动态方法调用。如下所示:
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
二。使用通配符定义action
action代码如下所示:
public class HelloWorldAction{
private String message;
....
public String execute() throws Exception{
this.message = "我的第一个struts2应用";
return "success";
}
public String other() throws Exception{
this.message = "第二个方法";
return "success";
}
}
配置文件如下:
<package name="itcast" namespace="/test" extends="struts-default">
<action name="helloworld_*" class="cn.itcast.action.HelloWorldAction" method="{1}">
<result name="success">/WEB-INF/page/hello.jsp</result>
</action>
</package>
其中的helloworld_*中的下划线(_)并不是必须的,因为helloworld_*中只有一个通配符*,所以method="{1}",也可以是helloworld_*_*,则method="{1}_{2}",class和result中也可以使用通配符的值,如:class="cn.itcast.action.{1}HelloWorldAction", <result name="success">/WEB-INF/page/{1}hello.jsp</result>.
此时要访问action中的other()方法,可以通过这样的URL访问:/test/helloworld_other.action
分享到:
相关推荐
通配符动态调用的关键在于正确地解析和调用方法。Struts2会根据URL中的部分替换通配符,并尝试调用Action类中的方法。如果找不到与之匹配的方法,Struts2将会回退到默认的执行方法(通常是`execute`)。 为了更高效...
Struts2的配置文件(struts.xml)可以通过通配符来定义Action,使得一个Action能够处理多个方法调用。例如,我们可以定义一个Action,然后使用不同的参数值来调用不同的Action方法。这样可以减少Action的数量,简化...
在Struts2中,Action是业务逻辑处理的核心,而通配符的使用则是Struts2框架中一种灵活的配置方式,允许我们以更简洁的方式调用同一个Action中的不同方法。下面我们将深入探讨如何利用Struts2的通配符来实现这一功能...
在 Struts2 中,我们可以使用不同的方式来动态调用 Action 的指定方法,例如使用表单提交、struts.xml 配置、通配符方法等方式。此外,我们还可以配置默认的 Action 和全局结果,以便更好地管理我们的应用程序。
本文将深入探讨Struts2.1中的动态方法调用和使用通配符定义这两个关键知识点。 首先,让我们理解动态方法调用的概念。在传统的Struts2框架中,Action类的方法与HTTP请求的URL路径直接关联。然而,动态方法调用允许...
动态方法调用是Struts中的一种机制,它允许在不预先定义每个具体方法的情况下,通过Action类的方法名来执行不同的业务逻辑。通常有三种方式实现DMI: 1. 改变表单中`action`属性,使不同的提交按钮对应不同的方法。...
Struts2 框架提供了动态方法调用的机制,允许一个 Action 对应多个请求,从而减少 Action 的数量。这种机制可以提高系统的灵活性和可维护性。 方法一:指定 Method 属性 在 Struts2 中,我们可以通过指定 Method ...
因此,推荐使用动态调用方式: - URL格式:`http://localhost:8080/xxx/user/user!method` - 示例:`http://localhost:8080/xxx/user/user!add`,其中`user!add`指定了要调用的方法。 #### 五、通配符配置 通配符...
例如,我们可以使用动态方法来调用Action类中的方法,如下所示: ${pageContext.request.contextPath }/test!query" rel="external nofollow" >DynamicMethodInvocation 在上面的示例中,我们使用动态方法来调用...
在Struts2中,通配符配置是一项强大的功能,它允许开发者以更灵活的方式定义Action映射,从而提高代码的复用性和配置的简洁性。这篇博客可能详细解释了如何在Struts2框架中使用通配符配置来简化Action配置。 通配符...
如果不想在XML配置文件中硬编码方法名,可以使用动态方法调用。请求URL中的部分可以动态解析为Action类中的方法名。比如,`myAction/save`会调用`save()`方法。 5. **注解配置** 除了XML配置,Struts2还支持使用...
通配符映射的优势在于简化配置和提高代码复用,但过度使用可能导致Action逻辑过于复杂,不易维护。因此,应根据实际需求权衡使用。 通过以上解释,我们可以看出Struts2的通配符映射是其强大特性之一,它可以提高...
### Struts2中通配符使用详解 #### 一、引言 在Web开发中,Struts2框架凭借其灵活性和强大的功能深受开发者喜爱。...因此,在实际开发中需要权衡利弊,合理选择是否使用通配符以及如何使用通配符。
`Action`接口定义了一个`execute()`方法,所有的业务逻辑都需要在这个方法中实现。例如: ```java public interface Action { public String execute() throws Exception; } ``` 在实际开发中,我们通常会继承`...
本篇文章将详细介绍Struts2 Action的三种访问方式:传统方式、通配符方式和动态方式。 1. **传统方式(Static Dispatch)** 传统方式是最基础的Action访问方式,通过硬编码URL来映射Action。在`struts.xml`配置...
在Struts2配置文件中,你可以使用通配符(*)来定义一个Action配置,这样可以匹配多个Action方法。例如,配置如下: ``` <action name="user_*" class="com.example.UserAction"> <result>/result.jsp </action...
总结来说,Struts2通过动态方法调用、通配符映射和拦截器+`@Action`注解等方式,提供了灵活的多请求处理能力,使Action类能够更好地组织和管理不同的业务逻辑。开发者可以根据项目需求和代码可维护性选择适合的方法...
3. **动态方法调用(Dynamic Method Invocation,DMI)**:如果配置文件中也没有通配符匹配,Struts2会尝试使用动态方法调用来解析Action。它将URL中的部分作为Action类的方法名进行调用。比如,URL为`/myMethod/...
这个例子中,当用户请求"logon.action"时,Struts2会实例化`tutorial.Logon`类并调用其`execute()`方法。如果执行成功,结果类型为"redirect-action",用户会被重定向到"Menu";如果执行失败,显示"Logon.jsp"。 2...