Struts开发人员的一个常用策略时使用同一个Action类来处理几个相关的任务。一个很好的例子是对一个数据记录执行基本的CRUD (创建读取修改和删除)操作,它们非常相似,可以放在一个Action类中处理。通过扩展DispatchAction(org.apache.struts.actions.DispatchAction),开发人员可以将多个方法在一个单一的Action内成
DispatchAction可以通过隐藏字段的关键字自动选择正确的方法;他使用反射机制而不是大部分开发人员所使用的逻辑方法。
public ActionForward create(ActionMapping mapping,
ActionForm form,
HttpServletRequest Request, HttpServletResponse Response)
throws IOException, ServletException;
public ActionForward read(ActionMapping mapping,
ActionForm form,
HttpServletRequest Request, HttpServletResponse Response)
throws IOException, ServletException;
public ActionForward update(ActionMapping mapping,
ActionForm form,
HttpServletRequest Request, HttpServletResponse Response)
throws IOException, ServletException;
public ActionForward delete(ActionMapping mapping,
ActionForm form,
HttpServletRequest Request, HttpServletResponse Response)
throws IOException, ServletException;
在Struts-config.xml中配置如下
<action-mappings >
<action
attribute="employeeForm"
input="/employee.jsp"
name="employeeForm"
parameter="method"
path="/employee"
scope="request"
type="app.EmployeeDispatchAction" />
</action-mappings>
为选择 delete 方法, 你可以调用
http://localhost/struts2/employee?method=delete
实践中method字段的值通常是按钮或者表单中隐藏属性的名来设置,
如<html:form action= /employee?method=create>或
在form中加入一个Hidden字段
<html:hidden name=”method” value=”create”/>