1.普通请求:action名称.action,例如test.action
JSP中body中写入:
<form action="test.action">
姓名:<input name="name">
<input type="submit">
struts.xml中action配置如下:<action name="test" class="com.shangguan.test.TestAction">
<result name="success">success.jsp</result>
<result name="error">error.jsp</result>
</action>
TestAction类文件代码如下:
public class TestAction extends ActionSupport{
/**
*
*/
private static final long serialVersionUID = 4193816458025859084L;
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String execute() throws Exception {
if("zhangsan".equals(name)){
return "success";
}else{
return "error";
}
}
}
2.动态函数请求:action名称!函数名.action,例如method!add.action。使用动态函数请求时,必须在配置文件中设置struts.enable.DynamicMethodInvocation的属性值为true,让xml支持动态函数,属性的默认值为false。
设置struts.enable.DynamicMethodInvocation的属性值有三种方式,前两种为常用方式:
(1)可以在struts.properties属性文件中写入struts.enable.DynamicMethodInvocation=true。
(2)也可以在struts.xml中配置<constant name="struts.enable.DynamicMethodInvocation" value="true "/>。
(3)也可以在web.xml中的核心控制器对应filter中配置<init-param></init-param>。但是不建议使用
动态函数请求例子如下:
a.在JSP中的body中写入请求:
<a href="method!add.action?name=zhangsan">添加</a>
<a href="method!show.action?name=lisi">展示</a>
b.在处理action请求的类中定义String add()等方法:
public class MethodAction {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String add(){
return "addrs";
}
public String show(){
return "showrs";
}
}
c.在struts.xml中配置action
第一种:
<action name="method" class="com.study.controller.MethodAction">
<result name="addrs">add.jsp</result>
<result name="showrs">show.jsp</result>
</action>
第二种:
可以使用通配符来配置action:*代表一个或者多个任意字符串,可以在定义action的name时使用name="*自定义名称",然后在定义method时使用method="{数字}",数字表示前面的第几个*所代表的字符串
JSP页面body中代码如下:
<a href="add_Method!add.action?name=zhangsan">添加</a>
<a href="show_Method!show.action?name=lisi">显示</a>
struts.xml中配置action:
<action name="*_*" class="com.shangguan.test.{2}Action" method=”{1}”> <result name="addrs">add.jsp</result> </action>
或者
<action name="*_Method" class="com.shangguan.test.MethodAction" method=”{1}”> <result name="addrs">add.jsp</result> </action>