一 提出背景
动态方法调用是为了解决一个Action对应多个请求的处理,以免Action太多。
二 解决方法
三 方案1——指定method属性
1、Action编写
package com.cakin.action;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorldAction extends ActionSupport {
@Override
public String execute() throws Exception {
System.out.println("执行Action");
return SUCCESS;
}
public String add()
{
return SUCCESS;
}
public String update()
{
return SUCCESS;
}
}
2、Struts编写
<?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="default" namespace="/" extends="struts-default">
<action name="helloworld" class="com.cakin.action.HelloWorldAction">
<result>/result.jsp</result>
</action>
<action name="addAction" method="add" class="com.cakin.action.HelloWorldAction">
<result>/add.jsp</result>
</action>
<action name="updateAction" method="update" class="com.cakin.action.HelloWorldAction">
<result>/update.jsp</result>
</action>
</package>
</struts>
3、测试
四 方案2——感叹号方式
1、Action编写
package com.cakin.action;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorldAction extends ActionSupport {
@Override
public String execute() throws Exception {
System.out.println("执行Action");
return SUCCESS;
}
public String add()
{
return "add";
}
public String update()
{
return "update";
}
}
2、Struts编写
<?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="default" namespace="/" extends="struts-default">
<action name="helloworld" class="com.cakin.action.HelloWorldAction">
<result>/result.jsp</result>
<result name="add">/add.jsp</result>
<result name="update">/update.jsp</result>
</action>
</package>
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
</struts>
3、测试
五 方案3——单个通配符方式
1、Action编写
package com.cakin.action;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorldAction extends ActionSupport {
@Override
public String execute() throws Exception {
System.out.println("执行Action");
return SUCCESS;
}
public String add()
{
return "add";
}
public String update()
{
return "update";
}
}
2、Struts编写
<?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="default" namespace="/" extends="struts-default">
<action name="helloworld_*" method="{1}" class="com.cakin.action.HelloWorldAction">
<result>/result.jsp</result>
<result name="add">/{1}.jsp</result>
<result name="update">/{1}.jsp</result>
</action>
</package>
<constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>
</struts>
3、测试
六 方案3——多个通配符方式
1、Action编写
package com.cakin.action;
import com.opensymphony.xwork2.ActionSupport;
public class HelloWorldAction extends ActionSupport {
@Override
public String execute() throws Exception {
System.out.println("执行Action");
return SUCCESS;
}
public String add()
{
return "add";
}
public String update()
{
return "update";
}
}
2、Struts编写
<?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="default" namespace="/" extends="struts-default">
<action name="*_*" method="{2}" class="com.cakin.action.{1}Action">
<result>/result.jsp</result>
<result name="add">/{2}.jsp</result>
<result name="update">/{2}.jsp</result>
</action>
</package>
<constant name="struts.enable.DynamicMethodInvocation" value="false"></constant>
</struts>
3、测试
相关推荐
在Struts2中,动态方法调用(Dynamic Method Invocation,DMI)是一种特性,允许我们通过URL直接调用Action类的方法,而无需在配置文件中显式指定。这在某些情况下提供了更大的灵活性。 在Struts2的动态方法调用中...
2. 动态方法调用 在URL请求中,我们可以传递一个名为`method`的参数,Struts2会根据这个参数值来寻找并执行相应的方法。例如,访问`http://example.com/multiMethodTest.action?method=executeMethod2`,Struts2就...
本篇文章将深入探讨这个经典组合的集成过程,并以"spring-mybatis-struts2-master"项目为例,解析其主要代码,帮助开发者更好地理解和应用SSM框架。 一、Spring框架 Spring作为核心容器,负责管理对象的生命周期和...
在开始深入探讨动态方法调用之前,让我们先回顾一下Struts 2框架的基本概念。 1. **Action**: 在Struts 2中,Action是业务逻辑的核心,负责处理用户的请求并返回相应的视图。默认情况下,Struts 2会调用Action类中...
这个"struts-2.5.14.1-apps"是Struts2官方提供的示例程序集合,旨在帮助开发者更好地理解和掌握Struts2框架的核心特性以及最佳实践。在深入探讨之前,我们先来了解一下Struts2的基本概念。 Struts2是基于MVC(Model...
3. **动态方法调用(Dynamic Method Invocation,DMI)**:允许直接通过URL调用Action的方法,提供了更灵活的路由机制。 4. **OGNL(Object-Graph Navigation Language)**:Struts2的默认表达式语言,用于数据绑定...
在基础配置完成后,教程将深入讲解Struts的核心组件,如Action、ActionForm、DispatcherServlet(即Struts的前端控制器)以及配置文件struts-config.xml。Action是处理用户请求的核心类,ActionForm用于封装表单数据...
9. ** strut2框架的增强特性**:如果文档包含Struts 2的内容,那么可能涵盖了Tiles布局、Freemarker模板引擎、动态方法调用(Dynamic Method Invocation,DMI)、Ajax支持等特性。 这个中文文档集合对于初学者和有...
在Struts2框架中,直接和间接访问Servlet API以及动态方法调用是两个关键概念,它们对理解和优化应用性能至关重要。 首先,让我们深入理解直接访问Servlet API。在传统的MVC模式中,Servlet扮演着控制器的角色,...
通配符动态调用是Struts2动态调用的一种进阶形式,它的主要优点在于减少重复配置。传统的动态调用可能需要为每个method写一条配置,例如: ```xml *" class="com.example.UserAction"> <result type="dispatcher">...
例如,`StrutsActionProxy`类是如何拦截Struts的请求,然后通过Spring的IoC容器查找并调用对应的bean方法。同时,源代码中还展示了如何将Struts的配置信息与Spring的bean定义相结合,实现配置的统一管理和重用。 ...
《Apache Struts 2 Web Application Development》是一本深入探讨如何使用Apache Struts 2框架进行Web应用程序开发的专业书籍。出版于2009年,它为开发者提供了丰富的知识和实践指导,帮助他们掌握这一强大的MVC...
本篇文章将深入探讨Struts框架的核心概念、工作原理及其在实际开发中的应用。 一、Struts框架概述 Struts作为一个开源的MVC框架,它为开发者提供了构建可维护、结构清晰的Web应用程序的工具和结构。通过分离业务...
- **Struts2**:通过OGNL表达式可以实现动态方法调用,无需提前硬编码Action方法,增强了代码的可维护性。 5. 错误和异常处理: - **Struts1**:错误和异常处理相对较弱,通常需要在配置文件中手动指定错误页面。...
在实际开发中,整合JQuery EasyUI与Struts2可以使前端界面与后端服务无缝对接,实现数据的动态交互。下面我们将详细探讨这个过程中的关键知识点: 1. **JQuery EasyUI**:EasyUI提供了预定义的CSS和JavaScript组件...
此外,它还支持动态方法调用,即根据请求参数的不同,动态决定执行哪个方法。例如,你可以设置一个`execute`方法来处理默认请求,而其他方法则通过通配符调用。 在实际开发中,我们还可以结合Struts2的拦截器...
- **struts-config.xml**:该文件是 Struts 的核心配置文件,它定义了 Action 映射、ActionForm 类、异常处理机制等。 - **web.xml**:Web 应用程序的部署描述符,其中包含了对 ActionServlet 的配置信息,如初始化...
这个实验是学习Struts2的基础,通过实践,你可以深入理解Struts2的请求处理流程,动态方法调用的机制,以及如何进行表单数据验证。完成这个实验后,你可以进一步探索Struts2的拦截器、结果类型、国际化、文件上传...
- `struts2-core`:这是Struts2框架的核心模块,包含了处理请求、调度、拦截器、结果类型、动态方法调用等功能。其中,Action接口和ActionSupport类是处理业务逻辑的基础,而.struts.xml配置文件则定义了请求和...
例如,可能增加了对自定义拦截器的支持,或者增强了动态方法调用的功能。每个新版本的DTD都可能包含对旧版本的扩展或改进。 4. **struts-2.1.7.dtd** - Struts2.1.7是2.1系列的一个特定版本,可能包含了2.1系列的...