现在的位置: 首页 > 综合 > 正文

道听途说Struts2之5:Method and DMI

2013年01月22日 ⁄ 综合 ⁄ 共 1420字 ⁄ 字号 评论关闭

         在前面我们知道了,在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就会到类中找对应的方法执行。以后在实际中第二种用的多,所以第一种就不用记住了。

         希望写到这里说明白了,如果哪里错了,还请指出

 

抱歉!评论已关闭.