1.我们可以在struts.xml的action中使用同一个类,创建不同的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>
<package name="test" extends="struts-default">
<action name="login" class="test.TestAction" method="login">
<result name="success">success.jsp</result>
<result name="fail">fail.jsp</result>
</action>
<action name="register" class="test.TestAction" method="register">
<result name="success">success.jsp</result>
<result name="fail">fail.jsp</result>
</action>
</package>
</struts>
在类test.TestAction中,实现对应的method
public String register() throws Exception {
return "success";
}
public String login() throws Exception {
return "success";
}
2.我们可以使用不同的class,同时使用相同的method,这个就不用代码演示了,因为这个是在不同的class里实现不同的method,上面说的相同只是指一个名字。
3.我们可以使用通配符*
。先给出不使用*
的情况。
<?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>
<package name="test" extends="struts-default">
<action name="login" class="test.TestAction" method="login">
<result name="success">success.jsp</result>
<result name="fail">fail.jsp</result>
</action>
<action name="register" class="test.RegisteAction" method="register">
<result name="success">success.jsp</result>
<result name="fail">fail.jsp</result>
</action>
</package>
</struts>
使用通配符:
<?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>
<package name="test" extends="struts-default">
<action name="*" class="test.TestAction" method="{1}">
<result name="success">success.jsp</result>
<result name="fail">fail.jsp</result>
</action>
<action name="*" class="test.RegisteAction" method="*">
<result name="success">success.jsp</result>
<result name="fail">fail.jsp</result>
</action>
</package>
</struts>
其实乍看起来没啥,但是在Struts2 中,定义Action的name属性时使用*
代表一个或者多个任意字符串,接下来就可以在class,method,<result>
子元素使用{N}
形式的表达式,代表前面第N个星号所匹配的字串。