struts2DMI(动态方法调用)
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(动态方法调用)的更多相关文章
- struts2DMI(动态方法调用)
DMI(Dynamic Method Invoke)即动态,是strus2的一个特性,我们知道,在最开始学习strus2时,往往一个action中只有一个excute方法,比如说add,delete, ...
- Struts2学习笔记 - Action篇<动态方法调用>
有三种方法可以使一个Action处理多个请求 动态方法调用DMI 定义逻辑Acton 在配置文件中使用通配符 这里就说一下Dynamic Method nvocation ,动态方法调用,什么是动态方 ...
- 第三章Struts2 Action中动态方法调用、通配符的使用
01.Struts 2基本结构 使用Struts2框架实现用登录的功能,使用struts2标签和ognl表达式简化了试图的开发,并且利用struts2提供的特性对输入的数据进行验证,以及访问Servl ...
- Struts2 动态方法调用
01.Struts 2基本结构 使用Struts2框架实现用登录的功能,使用struts2标签和ognl表达式简化了试图的开发,并且利用struts2提供的特性对输入的数据进行验证,以及访问Servl ...
- struts之动态方法调用使用通配符
一.DMI动态方法调用的其中一种改变form表单中action属性的方式已经讲过了.还有两种,一种是改变struts.xml配置文件中action标签中的method属性,来指定执行不同的方法处理不同 ...
- struts之动态方法调用改变表单action属性
一.动态方法调用(DMI:Dynamic Method Invocation) ⒈struts2中同样提供了这个包含多个逻辑业处理的Action,这样就可以在一个Action中进行多个业务逻辑处理 ...
- Struts2 Action中动态方法调用、通配符的使用
一.Struts2执行过程图: 二.struts2配置文件的加载顺序 struts-default.xml---struts-plugin.xml---struts.xml 具体步骤: 三.Actio ...
- Struts(八):动态方法调用
动态方法调用:通过url动态调用action中的方法. 默认情况下,Struts的动态方法调用处于禁用状态. 测试定义一个action类: package com.dx.actions; public ...
- Struts 2之动态方法调用,不会的赶紧来
学习Struts2框架以来为了减少Action 的数量,我们可以使用动态方法进行处理. 动态方法调用(Dynamic Method Invocation,DMI)是指表单元素的Action并不是直接等 ...
随机推荐
- Android中 int 和 String 互相转换的多种方法
1 如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([ ...
- debian下使用gitosis+gitweb搭建SSH认证的git服务器
搭建完成Git服务器后,需要使用两台机器进行测试,一台机器作为服务器端server,一台服务器作为客户端client.整个系统,需要三个计算机账户,这里假设server端的账户名为git,client ...
- ASP.Net的导出Excel的快速方法,DataTable导出Excel(亲测,非原创)
//使用方法 ExcelHelper.dataTableToCsv(dt,@"D:\1212.xls");System.Diagnostics.Process.Start(@&qu ...
- Ajax异步调用Controller的Return JsonResult生成下拉列表
@using System.Web.Optimization; @{ Layout = null; } <!DOCTYPE html> <html> <head> ...
- TextView支持的XML属性及相关方法
1.android:auyoLink----->setAutoLinkMask(int) ----->是否将符合指定格式的文字转换为可单击的超链接形式 2.android:autoText ...
- 01 选择 Help > Install New Software,在出现的对话框里,点击Add按钮,在对话框的name一栏输入“ADT”,点击Archive...选择离线的ADT文件,contact all update ....千万不要勾选点击Add按钮,在对话框的name一栏输入“ADT”,点击Archive...选择离线的ADT文件,contact all update ....千万不要勾
引言 好久没碰过android,今天重新搭建了一次环境,遇到的问题记录下载.共以后使用. 安装 软件的软件有jdk+eclipse+adt+sdk 主要记录安装adt和sdk的过程,注意,adt和sd ...
- C#中的常见集合类的比较
一.非泛型集合与泛型集合 非泛型集合:Array.ArrayList.HashTable.Queue.Statck.SortedList 泛型集合:List.Dictionary.Queue.Stac ...
- delphi 中如何查看网页POSTDATA
procedure TForm1.WebBrowser1NewWindow2(Sender: TObject; var ppDisp: IDispatch; var Cancel: WordBool ...
- 如何快速清空项目中的session值
/清空session //第一种:按照指定的名称清空session //request.getSession().removeAttribute("globle_user"); / ...
- 避开WebForm天坑,拥抱ASP.Net MVC吧
有鹏友在如鹏网的QQ群中提了一个问题: 请问,在ASP.Net中如何隐藏一个MenuItem,我想根据不同的权限,对功能菜单进行隐藏,用style不行. 如果要仅仅解答这个问题,很好解答,答案很简单: ...