`
cakin24
  • 浏览: 1388521 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

动态方法调用-深入Struts2

阅读更多
一 提出背景
动态方法调用是为了解决一个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、测试

 



 
  • 大小: 87.4 KB
  • 大小: 18.5 KB
  • 大小: 18.6 KB
  • 大小: 19.6 KB
  • 大小: 18.7 KB
1
0
分享到:
评论

相关推荐

    Struts2 动态方法调用(十三)

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

    struts2动态访问调用-method方法

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

    spring-mybatis-struts2-master ——demo

    本篇文章将深入探讨这个经典组合的集成过程,并以"spring-mybatis-struts2-master"项目为例,解析其主要代码,帮助开发者更好地理解和应用SSM框架。 一、Spring框架 Spring作为核心容器,负责管理对象的生命周期和...

    struts 2 action 动态调用

    在开始深入探讨动态方法调用之前,让我们先回顾一下Struts 2框架的基本概念。 1. **Action**: 在Struts 2中,Action是业务逻辑的核心,负责处理用户的请求并返回相应的视图。默认情况下,Struts 2会调用Action类中...

    struts-2.5.14.1-apps struts2官方例程

    这个"struts-2.5.14.1-apps"是Struts2官方提供的示例程序集合,旨在帮助开发者更好地理解和掌握Struts2框架的核心特性以及最佳实践。在深入探讨之前,我们先来了解一下Struts2的基本概念。 Struts2是基于MVC(Model...

    struts2-showcase.rar

    3. **动态方法调用(Dynamic Method Invocation,DMI)**:允许直接通过URL调用Action的方法,提供了更灵活的路由机制。 4. **OGNL(Object-Graph Navigation Language)**:Struts2的默认表达式语言,用于数据绑定...

    MYECLIPS--STRUtS教程--PDF

    在基础配置完成后,教程将深入讲解Struts的核心组件,如Action、ActionForm、DispatcherServlet(即Struts的前端控制器)以及配置文件struts-config.xml。Action是处理用户请求的核心类,ActionForm用于封装表单数据...

    2010年---STRUTS中文文档

    9. ** strut2框架的增强特性**:如果文档包含Struts 2的内容,那么可能涵盖了Tiles布局、Freemarker模板引擎、动态方法调用(Dynamic Method Invocation,DMI)、Ajax支持等特性。 这个中文文档集合对于初学者和有...

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

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

    struts2动态调用之通配符

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

    spring-webmvc-struts.jar

    例如,`StrutsActionProxy`类是如何拦截Struts的请求,然后通过Spring的IoC容器查找并调用对应的bean方法。同时,源代码中还展示了如何将Struts的配置信息与Spring的bean定义相结合,实现配置的统一管理和重用。 ...

    Packtpub-Apache Struts 2 Web Application Development(2009).rar

    《Apache Struts 2 Web Application Development》是一本深入探讨如何使用Apache Struts 2框架进行Web应用程序开发的专业书籍。出版于2009年,它为开发者提供了丰富的知识和实践指导,帮助他们掌握这一强大的MVC...

    技术我之见----struts

    本篇文章将深入探讨Struts框架的核心概念、工作原理及其在实际开发中的应用。 一、Struts框架概述 Struts作为一个开源的MVC框架,它为开发者提供了构建可维护、结构清晰的Web应用程序的工具和结构。通过分离业务...

    Struts1和Struts2区别

    - **Struts2**:通过OGNL表达式可以实现动态方法调用,无需提前硬编码Action方法,增强了代码的可维护性。 5. 错误和异常处理: - **Struts1**:错误和异常处理相对较弱,通常需要在配置文件中手动指定错误页面。...

    JQuery EasyUI 整合struts2 代码下载

    在实际开发中,整合JQuery EasyUI与Struts2可以使前端界面与后端服务无缝对接,实现数据的动态交互。下面我们将详细探讨这个过程中的关键知识点: 1. **JQuery EasyUI**:EasyUI提供了预定义的CSS和JavaScript组件...

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

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

    java--struts讲义

    - **struts-config.xml**:该文件是 Struts 的核心配置文件,它定义了 Action 映射、ActionForm 类、异常处理机制等。 - **web.xml**:Web 应用程序的部署描述符,其中包含了对 ActionServlet 的配置信息,如初始化...

    struts2实验一:动态方法调用+请求参数的获取+简单的表单数据验证

    这个实验是学习Struts2的基础,通过实践,你可以深入理解Struts2的请求处理流程,动态方法调用的机制,以及如何进行表单数据验证。完成这个实验后,你可以进一步探索Struts2的拦截器、结果类型、国际化、文件上传...

    struts2 API帮助文档

    - `struts2-core`:这是Struts2框架的核心模块,包含了处理请求、调度、拦截器、结果类型、动态方法调用等功能。其中,Action接口和ActionSupport类是处理业务逻辑的基础,而.struts.xml配置文件则定义了请求和...

    不同版本的 struts2.dtd

    例如,可能增加了对自定义拦截器的支持,或者增强了动态方法调用的功能。每个新版本的DTD都可能包含对旧版本的扩展或改进。 4. **struts-2.1.7.dtd** - Struts2.1.7是2.1系列的一个特定版本,可能包含了2.1系列的...

Global site tag (gtag.js) - Google Analytics