您的位置:首页 > 编程语言 > Java开发

道听途说Struts2之5:Method and DMI

2012-04-08 15:33 232 查看
在前面我们知道了,在Struts.xml中可以配置Action所使用的类,类中提供一个execute方法,默认会去执行这个方法。既然有默认那么我们就可以改变这个默认方法。在其中使用method就可以了。代码如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <constant name="struts.devMode" value="true" />
    <package name="user" extends="struts-default" namespace="/user">
        <action name="userAdd" class="com.mengxiangyue.struts2.user.action.UserAction" method="add">
            <result>/user_add_success.jsp</result>
        </action>
        
        <action name="user" class="com.mengxiangyue.struts2.user.action.UserAction">
            <result>/user_add_success.jsp</result>
        </action>
    </package>
</struts>

对应的UserAction类代码如下:
package com.mengxiangyue.struts2.user.action;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {
	public String add() {
		return SUCCESS;
	}

}
在UserAction中我们继承了ActionSupport,提供了一个add方法。返回了一个SUCCESS,这里的SUCCESS是在ActionSupport中定义的一个常量,值就是String类型的success。这里并没有提供默认的execute方法,这里我们不使用。
在我们的Struts.xml文件中,在userAdd action中多了一个method,值为add。表示在使用的时候会执行对应类中的add方法。后面还定义了一个user
action这个是为了使用动态方法调用(DMI)而设置的。
到这里我们就可以使用下面调用方式了。
<ahref="项目名/user/userAdd">添加用户</a>
这个将会使用userAddaction,并且执行对应的add方法。
<ahref="项目名/user/user!add">添加用户</a>
这个将会使用useraction,并且也会执行对应的add方法。这种调用就是在action后面加上“!”,然后加上对应的方法名。这样Struts2就会到类中找对应的方法执行。以后在实际中第二种用的多,所以第一种就不用记住了。
希望写到这里说明白了,如果哪里错了,还请指出
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: