struts2动态方法调用共有三种方式:

1、通过action元素的method属性指定访问该action时运行的方法

<package name="action" extends="struts-default" namespace="/user">

      <action name="login" class="cn.orlion.action.LoginAction" method="login">
<result name="success">/index.jsp</result>
<result name="error">/login.jsp</result>
</action> </package>

[

在struts2框架中使用包来管理Action,包的作用和java中的类包是非常类似的,它主要用于管理一组业务功能相关的action。在实际应用中,我们应该把一组业务功能相关的Action放在同一个包下。
  (1)name - 配置包时必须指定name属性,如果其他包要继承该包,必须通过该属性进行引用,name属性值不能有相同 。
  (2)namespace - 包的namespace属性用于定义该包的命名空间。该属性可以不配置,对本例而言,如果不指定该属性,默认的命名空间为""(空字符串)。

例:当把namespace设成/user时,访问的时候必须在action前边加上/user,即http://localhost:8080/Struts2Demo/login.action => http://localhost:8080/Struts2Demo/user/login.action才能访问到该action。

(3)extends - 通常每个包都应该继承struts-default包, struts-default包是由struts内置的,它定义了struts2内部的众多拦截器和Result类型。

]

如果不指定method属性则当访问/user/login.action时会默认执行cn.orlion.action.LoginAction中execute方法。

2、感叹号方式(官方不建议使用此方法)

先要在struts.xml文件中开启:<constant name="struts.enable.DynamicMethodInvocation" value="true" />

<package name="user" namespace="/user" extends="struts-default">
<action name="user" class="cn.orlion.user.UserAction">
<result>
/login.jsp
</result>
</action>
</package>

访问http://localhost:8080/Struts2Demo/user/user!login就能访问到

3、通配符

<package name="actions" namespace="/actions" extends="struts-default">
<action name="student*" class="cn.orlion.actions.StudentsAction" method="{1}">
<result>
/login.jsp
</result>
</action>
<action name="*-*" class="cn.orlion.actions.{1}Action" method="{2}">
<result>
/login.jsp
</result>
</action>
</package>

如上配置所示,当访问http://localhost:8080/Struts2Demo/actions/studentlogin的时候就会匹配到student*,从而去执行StudentsAction中的login方法

当访问http://localhost:8080/Struts2Demo/actions/Teachers-login的时候就会匹配到*-*,从而去执行TeachersAction中的login方法

当访问http://localhost:8080/Struts2Demo/actions/Students-reg的时候就会匹配到*-*,从而去执行StudentsAction中的reg方法

注意,jsp文件中路径最好使用绝对路径以避免命名空间问题!

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

  1. struts2DMI(动态方法调用)

    DMI(Dynamic Method Invoke)即动态,是strus2的一个特性,我们知道,在最开始学习strus2时,往往一个action中只有一个excute方法,比如说add,delete, ...

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

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

  3. 第三章Struts2 Action中动态方法调用、通配符的使用

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

  4. Struts2 动态方法调用

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

  5. struts之动态方法调用使用通配符

    一.DMI动态方法调用的其中一种改变form表单中action属性的方式已经讲过了.还有两种,一种是改变struts.xml配置文件中action标签中的method属性,来指定执行不同的方法处理不同 ...

  6. struts之动态方法调用改变表单action属性

      一.动态方法调用(DMI:Dynamic Method Invocation) ⒈struts2中同样提供了这个包含多个逻辑业处理的Action,这样就可以在一个Action中进行多个业务逻辑处理 ...

  7. Struts2 Action中动态方法调用、通配符的使用

    一.Struts2执行过程图: 二.struts2配置文件的加载顺序 struts-default.xml---struts-plugin.xml---struts.xml 具体步骤: 三.Actio ...

  8. Struts(八):动态方法调用

    动态方法调用:通过url动态调用action中的方法. 默认情况下,Struts的动态方法调用处于禁用状态. 测试定义一个action类: package com.dx.actions; public ...

  9. Struts 2之动态方法调用,不会的赶紧来

    学习Struts2框架以来为了减少Action 的数量,我们可以使用动态方法进行处理. 动态方法调用(Dynamic Method Invocation,DMI)是指表单元素的Action并不是直接等 ...

随机推荐

  1. 『TCP/IP详解——卷一:协议』读书笔记——15

    2013-08-25 13:39:40 第6章 ICMP:Internet控制报文协议 6.1 引言 ICMP经常被认为是IP层的一个组成部分.它传递差错报文以及其他需要注意的信息.ICMP报文同通常 ...

  2. coalesce函数用法

    COALESCE函数会依次检查输入的参数,返回第一个不是NULL的参数,只有当传入COALESCE函数的所有的参数都是NULL的时候,函数才会返回NULL

  3. Java学习笔记七——数组工具类Arrays

    数组工具类Arrays Java提供的Arrays类里包含的一些static修饰的方法可以直接操作数组.若将里面的方法用熟的话,那开发效率会大大提高.下面介绍其中的方法. List<T> ...

  4. iOS7界面的兼容性调整之一

      if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) {   self.edgesForExtendedLayout ...

  5. 如何让ECSHOP不同的分类调用不同模板方法

    如何给ecshop商品分类,显示不同的模板的话.可以通过不同的分类ID来取得不同模板.我们可以通过分类ID来判断,比如分类为1的,调用cat1.dwt.分类为2的,调用cat2.dwt,我们在cate ...

  6. Android ExpandableListView

    ExpandableListView 结合SimpleExpandableListAdapter用法 最终实现效果: activity_main.xml <?xml version=" ...

  7. Ubuntu之root权限的获取

    方案一: Ubuntu的root密码在没有设置之前是随机的,即在每一次开机的时候他的密码都不同,但是由于在安装Ubuntu的时候需要建立一个账户,而这个招呼又属于admin组,因此它可以对root进行 ...

  8. 如何向MyEclipse项目的文件夹中添加JSP页面?

    1.鼠标选中该文件夹:2.鼠标右键单击该文件夹,选择“new->file”菜单项,创建一个空白文件:3.将JSP页面的所有源代码全部复制到该文件4.单击工具栏的“保存”按钮

  9. SQL Server认证培训与考试

    Microsoft 技术专员 (MTA) - 数据库 https://www.microsoft.com/zh-cn/learning/mta-certification.aspx MCSA: SQL ...

  10. 作业3.2:psp

    PSP2.1 Personal Software Process Stages Time Planning 计划 20min Estimate 估计这个任务需要多长时间 3.5h Developmen ...