在前面我们知道了,在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就会到类中找对应的方法执行。以后在实际中第二种用的多,所以第一种就不用记住了。
希望写到这里说明白了,如果哪里错了,还请指出