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并不是直接等 ...
随机推荐
- matlab linux 安装
1. 获取matlab的iso文件,并挂载到目录下2. sudo sh $(matlab_path)/matlab安装(破解,相关见说明)3. 加入系统路径,将$(matlab_install_pat ...
- (混合背包 多重背包+完全背包)The Fewest Coins (poj 3260)
http://poj.org/problem?id=3260 Description Farmer John has gone to town to buy some farm supplies. ...
- Add more security in Visual Studio 2012
Compile flags: /GS: Stack protection from buffer overrun. /SDL: Subset of W3&W4 security warning ...
- ios页面保存至桌面logo大小
<link rel="apple-touch-icon" href="touch-icon-iphone.png" /> <!--57*57- ...
- centos 6.X minimal 系列最小化安装完成后,安装mono和jexus过程小记录
在使用虚拟机安装minimal版centos运行mono+jexus的时候,遇到了一些坑,记录一下,比如虚拟机访问不了网络,没wget命令没开放80端口,等等小问题,其他网上教程已经有mono+jex ...
- Linux内核--网络栈实现分析(十一)--驱动程序层(下)
本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7555870 更多请查看专栏,地 ...
- CSS浮动(float,clear)通俗讲解
首先要知道,div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流.如下图: 可以看出,即使div1的宽度很小,页面中一行可以容下div1和div2,div2也不会排在div1后边,因为d ...
- 0002--Weekly Meeting on 27th March and 3th April, 2015
27th March, 2015 (1) RankNet && PageRank ->reporter: jinquan Du Web_RankNet Web_PageRa ...
- HtmlAgilityPack中通过sibling才能得到对应的InnerText和form,option等tag的子节点
[背景] 之前使用HtmlAgilityPack期间,遇到了2个bug: 1. InnerText没有包含对应字符串(但是用NextSibling.InnerText却可以得到) 对于html: ? ...
- [ASE][Daily Scrum]12.12
好久没有写daliy scrum了…… 目前看,我们的无限地图,AI以及计分都差不多成型了,不过还有很多bug在调整当中 今天要做的是 Zhao 调通分数&聊天服务器 Yiming Shili ...