当structs.xml解析到Action的时候,默认执行的是此action的execute()方法,但是实际开发中,我们的action中含有很多方法,比如说增删改查的方法,那么structs.xml怎样辨别不同的方法,然后给我们指向正确的方法呢?下面主要介绍三种方法,最后的方法是推荐的方法,前两种作为八卦大家看看即可。

方法一,通过method属性来访问

  通过指定methord方法来实现,比如下面

  浏览器中我们要访问的网址是:http://localhost:8090/Structs2724/user/useradd

  对应的structs.xml的配置行如下

        <action name="useradd" class="DMI.UserAddAction" method="Add" >
<result name="success">
/adduser.jsp
</result>

  对应的action.java文件如下

 package DMI;

 import com.opensymphony.xwork2.ActionSupport;

 public class UserAddAction extends ActionSupport {
public String Add() {
return SUCCESS;
}
}

  structs.xml解析到user的namespace后,发现有一个叫做useradd的action,然后继续解析这个action的属性,发现了一个叫method的属性,哦,原来这个action对应的是这个method啊,然后呢,就开始执行这个Add这个方法,然后返回"success"这样的字符串,这个时候,action从自己的result找对应的result,然后返回给浏览器adduser.jsp这个文件。这样就实现了多调用

方法二,采用!来实现(不推荐使用)

  仔细看方法一,发现,如果这个action有很多方法,那么,我们得写很多action,所以有没有一种方法可以匹配所有的action的方法呢?那就用!来实现吧

  实现的配置是:在structs.xml文件中开启一个值

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

  然后对应的action可以设置为如下

        <action name="user" class="DMI.UserAddAction" >
<result >
/adduser.jsp
</result>
</action>

  然后可以通过下面的网址来访问:

    http://localhost:8090/Structs2724/user/user!add

方法三,采用通配符来匹配,最常用,强烈推荐

  这个是对方法一的进一步扩充,需要关闭structs.xml的动态匹配,也就是将方法二开启的那个开关给关了,具体的如下所示

        <action name="*" class="DMI.UserAddAction" method="{1}">
<result>
/{1}.jsp
</result>
</action>

  对应的action如下

    public String Add() {
return SUCCESS;
} public String Addabc(){
return SUCCESS;
} public String Add3(){
return SUCCESS;
}

Struts2动态方法调用(DMI)的更多相关文章

  1. Struts2 动态方法调用

    01.Struts 2基本结构 使用Struts2框架实现用登录的功能,使用struts2标签和ognl表达式简化了试图的开发,并且利用struts2提供的特性对输入的数据进行验证,以及访问Servl ...

  2. Struts2动态方法调用

    动态方法就是一个Action对应多个请求,减少Action的数量 1.指定method属性 <action name="addAction" method="add ...

  3. (Struts2学习系列三)Struts2动态方法调用:通配符方式

    更改src/struts2.xml的代码: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE ...

  4. (Struts2学习系列二)Struts2动态方法调用:指定method属性

    紧接着上一篇,在HelloWorldAction.java中添加add和update方法: public class HelloWorldAction extends ActionSupport{ p ...

  5. Struts2学习笔记 - Action篇<动态方法调用>

    有三种方法可以使一个Action处理多个请求 动态方法调用DMI 定义逻辑Acton 在配置文件中使用通配符 这里就说一下Dynamic Method nvocation ,动态方法调用,什么是动态方 ...

  6. struts2之动态方法调用(转)

    转自:http://blog.csdn.net/longwentao/article/details/6940289 当我们访问一个Action时,默认是访问execute()方法,但当在一个Acti ...

  7. 第三篇——Struts2的动态方法调用

    Struts2动态方法调用 默认方式:默认执行方法中的execute方法,若指定类中没有该方法,默认返回success: method方式:执行method属性中定义的方法,没有该方法,页面报错: 通 ...

  8. Struts2学习四----------动态方法调用

    © 版权声明:本文为博主原创文章,转载请注明出处 Struts2动态方法调用 - 默认:默认执行方法中的execute方法,若指定类中没有该方法,默认返回success <package nam ...

  9. ActionMethod_DMI_动态方法调用

    Action执行的时候并不一定要执行execute方法可以在配置文件中配置Action的时候用method=来指定执行那个方法,也可以在url地址中动态指定(动态方法调用DMI)(推荐) 动态方法调用 ...

随机推荐

  1. NSValue&NSNumber

    void testForNSValue(void) { int i=10; //    NSLog(@"encode(int)=%s",@encode(int)); //    N ...

  2. 【代码笔记】iOS-首页3张图片变化

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...

  3. 网络热恋之SDWebImage

    SDWebImage-master 是一个非常强大的三方. 当需要应用SDWeb时把文件夹里的SDWebImage文件夹放入工程里. 在需要使用网络获取图片的文件里进入头文件#import " ...

  4. iOS之 APNs全新的APNs苹果15年WWDC大会上的干货

    记得14年在dl某大学校招上现场面试iOS时候被问到了APNs也就是苹果的推送问题,当时我表示一脸懵逼,因为当时还没有真正接触做过项目也就了解了个大概,总之当时回答的一塌糊涂!后来回去就在网上仔细查了 ...

  5. YUM源的简介,配置与使用

    A.yum 简介 yum,是Yellow dog Updater, Modified 的简称,是杜克大学为了提高RPM 软件包安装性而开发的一种软件包管理器.起初是由yellow dog 这一发行版的 ...

  6. Photo Shop切图

    切图之前 哪些是需要切出来的? 修饰性的 (一般用在background属性) 图标.logo 有特殊效果的按钮  文字等 非纯色的背景 内容性的 (一般用在img标签) Banner.广告图片 文章 ...

  7. .NET项目工程生成一份项目帮助文档chm--Sandcastle工具

    Sandcastle的,由Microsoft创建的,是从创建MSDN风格的文档中使用的工具.NET程序集和关联的XML注释文件.目前的版本是 2010年6月发布.这是命令行并没有GUI前端,项目管理功 ...

  8. xxx is not in the sudoers file.This incident will be reported.的解决方法 (一般用户不能执行sudo)

    1.切换到root用户下 2.添加sudo文件的写权限,命令是:chmod u+w /etc/sudoers 3.编辑sudoers文件vi /etc/sudoers找到这行 root ALL=(AL ...

  9. JavaScript(一)——简介(简单介绍)

    1.JavaScript是个什么东西? 它是个脚本语言,需要有宿主文件,它的宿主文件是HTML文件. 2.它与Java什么关系? 没有什么直接的联系,Java是Sun公司(已被Oracle收购了),J ...

  10. 挖一挖C#中那些我们不常用的东西之系列(4)——GetHashCode,ExpandoObject

    这篇继续分享下GetHashCode和ExpandoObject这两个比较好玩的方法. 一:GetHashCode 从MSDN上可以看到的解释是:用作特定类型的哈希函数,也就是说任何对象的实例都会有一 ...