当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. C语言中qsort函数的应用

    qsort函数包含在<stdlib.h>的头文件里,本文中排序都是采用的从小到大排序 一.对int类型数组排序 ]; int cmp ( const void *a , const voi ...

  2. 【代码笔记】iOS-改变文字输入框背景

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

  3. Visio作图

    1.Microsoft Visio介绍 Visio是一款便于IT和商务专业人员就复杂信息.系统和流程进行可视化处理.分析和交流的软件,也是Microsoft Office办公软件家族中的一个绘图工具软 ...

  4. 如何通过js跨域调用ASP.NET Web API (请问如何实现在javascript中通过http get的方式跨域调用ASP.NET Web API?)

    客户端js无需任何专门设置,使用通常的ajax调用即可: $.ajax({ url: '跨域URL', type: 'get', dataType: 'json', success: function ...

  5. 自动化部署教程(一) redhat安装jenkins

    自动化部署教程(一)  redhat安装jenkins 源配置: sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.or ...

  6. 京东MySQL监控之Zabbix优化、自动化

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://wangwei007.blog.51cto.com/68019/1833332 随 ...

  7. 重新认识mapreduce

    写这篇文章,是因为最近遇到了mapreduce的二次排序问题.以前的理解不完全正确.首先看一下mapreduce的过程 相信这张图熟悉MR的人都应该见过,再来一张图 wordcount也不细说了,ha ...

  8. W3School-CSS 背景实例

    CSS 背景实例 CSS 实例 CSS 背景实例 CSS 文本实例 CSS 字体(font)实例 CSS 边框(border)实例 CSS 外边距 (margin) 实例 CSS 内边距 (paddi ...

  9. python爬取并下载麦子学院所有视频教程

    一.主要思路 scrapy爬取是有课程地址及名称 使用multiprocessing进行下载 就是为了爬点视频,所以是简单的代码堆砌 想而未实行,进行共享的方式 二.文件说明 itemsscray字段 ...

  10. java enum(枚举)的使用

    在实际编程中,往往存在着这样的“数据集”,它们的数值在程序中是稳定的,而且“数据集”中的元素是有限的. 例如星期一到星期日七个数据元素组成了一周的“数据集”,春夏秋冬四个数据元素组成了四季的“数据集” ...