在Strut2中action有默认的方法execute来执行我们的操作,对于我们的应用很不方便,在这里我们来说一下struts2中action的动态调用和通配符的使用方法。
首先我们来看一下默认的执行方法的调用。以用户登录为例。在这里提供一个login.jsp页面,代码如下:
<form action="login" method="post">
帐号
<input type="text" name="name">
<br />
密码
<input type="password" name="password">
<br />
<input type="submit" value="提交">
</form>
在action中进行登录的判断,属性值通过set和get方法获得
public class LoginAction extends ActionSupport {
private String name;// 帐号
private String password;// 密码
// 主方法
public String execute() {
// 如何匹配就返回成功页面
if ("hello".equals(name) && "123".equals(password)) {
return "success";
} else {
return "fail";// 失败返回登录页面
}
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
struts.xml的配置文件
<struts>
<package name="default" namespace="/test" extends="/struts-default">
<action name="login" class="cn.test.action.TestAction" method="boologin">
<result name="hello">/result.jsp</result>
</action>
</package>
</struts>
默认的执行action的方法在struts.xml的配置文件中可以编写method的属性值。
动态调用Action的方法
在动态调用action的方法时,form表单的action的必须改成配置文件中action名称!方法名,代表的是执行action中的那一个方法,代码如下:
<form action="login!boologin" method="post">
帐号
<input type="text" name="name">
<br />
密码
<input type="password" name="password">
<br />
<input type="submit" value="提交">
</form>
Action类中存在的两个方法分别为execute和boologn,代码如下(set和get方法)在这里面的两个方法都是对登录的验证,代码如下:
public class LoginAction extends ActionSupport {
private String name;// 帐号
private String password;// 密码
// 主方法
public String execute() {
// 如何匹配就返回成功页面
if ("hello".equals(name) && "123".equals(password)) {
return "success";
} else {
return "fail";// 失败返回登录页面
}
}
public String boologin() {
// 如何匹配就返回成功页面
if ("hello".equals(name) && "123".equals(password)) {
return "success";
} else {
return "fail";// 失败返回登录页面
}
}
}
struts.xml的配置如下
<struts>
<package name="default" namespace="/test" extends="/struts-default">
<action name="login" class="cn.test.action.TestAction" method="boologin">
<result name="hello">/result.jsp</result>
</action>
</package>
</struts>
从struts.xml的配置文件中我们可以发现如果Action有很多的方法,那么我们必须配置多个action这样显得页面的繁琐和不利于代码的利用,所以STRUTSz中提供了通配符的调用方法。
通配符调用Action方法
使用通配符的方法调用action的方法,form表单的action为*_*,*代表的是你要使用的那个action,第二个*代表的是你调用action的那个方法,在登录的例子中,form表单的设置如下;
<form action="login_boologin" method="post">
帐号
<input type="text" name="name">
<br />
密码
<input type="password" name="password">
<br />
<input type="submit" value="提交">
</form>
在Action类中的不变,只是在struts.xml的配置更改如下:
<struts>
<package name="default" namespace="/test" extends="/struts-default">
<action name="login_*" class="cn.test.action.TestAction" method="{1}">
<result name="hello">/result.jsp</result>
</action>
</package>
</struts>
这是sruts2中action的调用的两种方法,需要注意的是在通配符调用action的方法在struts.xml的配置文件的设置,特别是*_*代表的是含义。