Struts 1.xにおけるDispatchActionの使い方
参照
標準的なActionを使用する場合、個々の操作ごとにActionのクラスを書きます.これにより、私たちのActionクラスが膨張します.この問題を解決するために、Strutsが提供してくれたDispatchActionを使用することができます.
DispatchActionの使い方:
1.まずアクションクラスを作成し、StrutsのDispatchActionを継承します.
2.struts-configを構成する.xmlファイル
注意:DispatchActionを使用するには、次の点に注意する必要があります.
参照
1.アクションにexecuteメソッドを上書きすると、親クラスをsuperで呼び出すexecuteメソッドが表示されなければなりません.そうしないと、DispatchActionは無効になります.
2.アクションを構成するときにparameterのプロパティ値はexecuteまたはperformではありません.そうしないと、strutsソースコードを参照して例外が放出されます.
3.パラメータがnullまたは存在しないパラメータにアクセスすると、例外が放出され、strutsのunspecifiedメソッドをActionに上書きし、このメソッドで処理することができます.
標準的なActionを使用する場合、個々の操作ごとにActionのクラスを書きます.これにより、私たちのActionクラスが膨張します.この問題を解決するために、Strutsが提供してくれたDispatchActionを使用することができます.
DispatchActionの使い方:
1.まずアクションクラスを作成し、StrutsのDispatchActionを継承します.
package com.yx.zzg.action;
import java.util.Date;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import com.yx.zzg.form.UserActionForm;
import com.yx.zzg.manager.UserManager;
import com.yx.zzg.model.User;
/**
* CRUD
*
* @author Administrator
*
*/
public class UserAction extends DispatchAction {
/**
* Struts unspecified , ,
*/
@Override
protected ActionForward unspecified(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
System.out.println("-----------UserAction.unspecified()-----------");
//
List userList = UserManager.getInstance().findAllUserList();
request.setAttribute("userlist", userList);
return mapping.findForward("list_success");
// ActionForward af = new ActionForward();
// af.setPath("/user/usermaint.do?command=list");
// af.setRedirect(true);
// return af;
}
/**
*
*
* @param mapping
* @param form
* @param request
* @param response
* @return
* @throws Exception
*/
public ActionForward add(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
//
UserActionForm uaf = (UserActionForm) form;
User user = new User();
// ( )
// BeanUtils.copyProperties( , );
BeanUtils.copyProperties(user, uaf);
user.setCreateDate(new Date());
//
UserManager.getInstance().addUser(user);
return mapping.findForward("success");
}
/**
*
*
* @param mapping
* @param form
* @param request
* @param response
* @return
* @throws Exception
*/
public ActionForward del(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
//
UserActionForm uaf = (UserActionForm) form;
// userId
String[] userIdList = uaf.getSelectFlag();
//
UserManager.getInstance().deleteUsers(userIdList);
return mapping.findForward("success");
}
/**
* ID
*
* @param mapping
* @param form
* @param request
* @param response
* @return
* @throws Exception
*/
public ActionForward find(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
//
UserActionForm uaf = (UserActionForm) form;
String userId = uaf.getUserId();
//
User user = UserManager.getInstance().findUserById(userId);
// user Action JSP
request.setAttribute("user", user);
return mapping.findForward("find_success");
}
/**
*
*
* @param mapping
* @param form
* @param request
* @param response
* @return
* @throws Exception
*/
public ActionForward modify(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
//
UserActionForm uaf = (UserActionForm) form;
User user = new User();
BeanUtils.copyProperties(user, uaf);
user.setCreateDate(new Date());
//
UserManager.getInstance().modifyUser(user);
return mapping.findForward("success");
}
}
2.struts-configを構成する.xmlファイル
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
"http://struts.apache.org/dtds/struts-config_1_3.dtd">
<struts-config>
<!-- ActionForm -->
<form-beans>
<form-bean name="userForm" type="com.yx.zzg.form.UserActionForm"></form-bean>
</form-beans>
<!-- -->
<global-forwards>
<forward name="success" path="/user/usermaint.do" redirect="true" />
</global-forwards>
<!-- Action -->
<action-mappings>
<!-- parameter command, -->
<action path="/user/usermaint" type="com.yx.zzg.action.UserAction"
name="userForm" scope="request" parameter="command">
<forward name="find_success" path="/user/user_modify.jsp" />
<forward name="list_success" path="/user/user_list.jsp" />
</action>
</action-mappings>
</struts-config>
注意:DispatchActionを使用するには、次の点に注意する必要があります.
参照
1.アクションにexecuteメソッドを上書きすると、親クラスをsuperで呼び出すexecuteメソッドが表示されなければなりません.そうしないと、DispatchActionは無効になります.
2.アクションを構成するときにparameterのプロパティ値はexecuteまたはperformではありません.そうしないと、strutsソースコードを参照して例外が放出されます.
3.パラメータがnullまたは存在しないパラメータにアクセスすると、例外が放出され、strutsのunspecifiedメソッドをActionに上書きし、このメソッドで処理することができます.