1 action编写的三种方式
(1) 创建普通类,这个不继承任何类,不实现任何接口
public class HelloAction {
}
(2) 创建类,实现接口Action
import com.opensymphony.xwork2.Action;
public class UserAction implements Action {
public String execute() throws Exception {
return null;
}
}
(3) 创建类,继承类ActionSupport(最常用)
public class PersonAction extends ActionSupport {
}
二 访问action的方法(重点)
1 有三种方式实现
*(1)使用action标签的method属性,在这个属性里面写执行的action的方法
- 创建action,创建多个方法
package Method;
import com.opensymphony.xwork2.ActionSupport;
/**
* Created by pc on 2017/9/21.
*/
public class BookAction extends ActionSupport {
//添加
public String add(){
System.out.println("add........");
return NONE;
}
//修改
public String update(){
System.out.println("update.......");
return NONE;
}
}
- 配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.i18n.encoding" value="utf-8"></constant>
<package name="method" extends="struts-default" namespace="/">
<action name="addAction" class="Method.BookAction" method="add"></action>
<action name="updateAction" class="Method.BookAction" method="update"></action>
</package>
</struts>
缺陷:action每个方法都需要配置,如果action里面有多个方法,配置很多的action
*(2)使用通配符方式实现(重点)
在action标签里面name属性,name属性值里面写符号 * 表示匹配任意内容
- 配置struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.i18n.encoding" value="utf-8"></constant>
<!--通配符方式实现-->
<package name="method1" extends="struts-default" namespace="/">
<!--
name属性值里面写符号
(1)执行action里面add方法,访问book_add,使用book_* 可以匹配到,*相当于add
(2)执行action里面的update方法,访问book_update,使用book_* 可以匹配到,*相当于update
上面两个路径使用book_* 可以匹配到
-->
<action name="book_*" class="Method.BookAction" method="{1}">
</action>
</package>
</struts>
(3)动态访问实现(不用)
2 演示错误
(1)如果action方法有返回值,在配置文件中没有配置,出现错误
(2)在action里面的方法有返回值,如果有返回值的时候类型必须是String
(3)action里面的方法可以没有返回值,没有返回值的时候,在result标签不需要配置
- 把方法写成void
- 让返回值,返回“none”