Action的编写方式
在struts2的应用开发中,Action作为框架的核心类,实现对用户请求的处理,Action被称为业务逻辑控制器。一个Action代表一次请求或调用,每个请求都会对应Action类中的一个方法,然后由这个方法进行业务处理。也就是说Action用来处理一次用户的请求对象。
- 编写一个普通的java类。
在类中编写一个公共的,带有String返回值的,没有参数的方法
- java类实现Action接口
为了让用户开发的Action更加规范,struts2提供了一个接口,用户实现这个接口的同时,需要重写该方法。并且这个接口中只定义了这一个方法,返回值为一个字符串,在该接口中定义了5个常量,用作execute的返回值
package com.zillion.action;
import com.opensymphony.xwork2.Action;
public class ActionDemo implements Action{
@Override
public String execute() throws Exception {
System.out.println("Action执行了");
return SUCCESS;
}
}
- java类继承ActionSupport(推荐)
ActionSupport类本身就实现了Action接口,是Struts2中Action接口的默认实现类,所以继承ActionSupport就等于实现了Action接口。ActionSupport类还实现了Validateable、ValidationAware、TextProvider、Serializable等接口,提供了更多的方法。
package com.zillion.action;
import com.opensymphony.xwork2.ActionSupport;
public class ActionDemo2 extends ActionSupport{
@Override
public String execute() throws Exception {
System.out.println("Action执行了");
return SUCCESS;
}
}
Action的通用访问方式实现
一个Action类中有许多方法,如果针对每个方法都配置一个对象的action,会使配置文件相当的冗长,如果将访问路径弄成指定格式的,就可以使用通配符 * 来实现公共action配置
- 在Action类中添加4个方法
package com.zillion.action;
import com.opensymphony.xwork2.ActionSupport;
public class ActionDemo2 extends ActionSupport{
public String add() throws Exception {
System.out.println("增加Action执行了");
return SUCCESS;
}
public String delete() throws Exception {
System.out.println("删除Action执行了");
return SUCCESS;
}
public String update() throws Exception {
System.out.println("修改Action执行了");
return SUCCESS;
}
public String select() throws Exception {
System.out.println("查找Action执行了");
return SUCCESS;
}
}
- 编写前端请求页面
4个不同的请求方法,但有相同的请求后缀Action。
<body>
<a href="${pageContext.request.contextPath}/addAction.action">增加测试代码</a>
<a href="${pageContext.request.contextPath}/deleteAction.action">删除测试代码</a>
<a href="${pageContext.request.contextPath}/updateAction.action">修改测试代码</a>
<a href="${pageContext.request.contextPath}/selectAction.action">查询测试代码</a>
</body>
- struts的配置文件
在action属性中,name使用代表任意字符,method中的{1} 代表name属性中出现的第一个 所代替的字符,即包含Action后缀的请求都会在该Action类中查找对应的方法。
<?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>
<package name="test" extends="struts-default" namespace="/">
<action name="*Action" class="com.zillion.action.ActionDemo2" method="{1}">
<result name="success">/hello.jsp</result>
</action>
</package>
</struts>