1.1Struts的DispatchAction组件类的应用实例
1、DispatchAction类
(1)其作用
主要是用于分发的Action;其主要的好处是把一些功能类似的Action放到一个Action类中,通过传入的不同参数来觉得执行哪个操作,从而减少Action类的个数。
DispatchAction就是在struts-config中用parameter参数配置一个表单字段名,这个字段的值就是最终替代execute被调用的方法----但要求方法的声明和execute必须一样。
(2)其实现的原理
是根据所传入的不同的方法名称的参数来决定执行哪个具体的操作方法,因为DispatchAction就是在struts-config中用parameter参数配置一个最终替代execute被调用的方法名称,并且该方法的声明和execute方法必须一模一样。
(2)org.apache.struts.actions.DispatchAction类
它是一个抽象类,并且也实现了其父类(Action)的execute()方法,所以它的子类就不必再来实现这个execute()方法了,而只需要专注于与应用相关的具体实际操作的方法。
2、实现的方法(参考UserLogin)
(1)设计一个表示层页面(注意下面的黑体部分的内容)
************Struts 的DispatchAction技术********************************
(2)设计完成上面的两个功能的DispatchAction类
package userLogin;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.apache.struts.util.MessageResources;
import https://www.doczj.com/doc/eb562942.html,mons.beanutils.PropertyUtils;
import org.apache.struts.actions.DispatchAction;
public class UserLoginDispatchAction extends DispatchAction
{
String userName,userPassword;
public UserLoginDispatchAction()
{
userName="";
userPassword="";
public ActionForward doLogin(ActionMapping actionMapping, ActionForm actionForm,HttpServletRequest request, HttpServletResponse response) throws
java.io.IOException,javax.servlet.ServletException
{
ActionErrors errors = new ActionErrors();
UserLoginForm userLoginForm = (UserLoginForm) actionForm;
userName = userLoginForm.getUserName();
userPassword = userLoginForm.getUserPassword();
request.setAttribute("userName", userName);
request.setAttribute("userPassword", userPassword);
if (userName.equals("yang")&&userPassword.equals("123")) //识别用户的身份
{
return (actionMapping.findForward("loginSuccess"));
}
else
{
errors.add("userLoginError",new ActionError("userLogin.inputerror"));
saveErrors(request,errors);
return (actionMapping.findForward("loginFailure"));
}
}
public ActionForward doLogout(ActionMapping actionMapping, ActionForm actionForm,HttpServletRequest request, HttpServletResponse response) throws
java.io.IOException,javax.servlet.ServletException
{
HttpSession session=request.getSession();
session.invalidate();
return (actionMapping.findForward("logoutSuccess"));
}
}
(3)在struts-config.xml文件中进行DispatchAction类的配置
scope="request" validate="true" input="/userLogin.jsp">
(4)执行该Web应用
而点击注销链接,
3、LookupDispatchAction类的应用实例
(1)LookupDispatchAction类的主要功能
DispatchAction类的子类LookupDispatchAction的相应方法的执行由struts-config.xml配置文件中的
(2)struts-config.xml配置文件中的相关示例
(3)ApplicationResources.properties文件示例
button.submit=submit
button.reset=reset
(4)JSP页面中的相关表单示例
(5)在Action 中必须实现getKeyMethodMap:
protected Map getKeyMethodMap() {
Map map = new HashMap();
map.put("button. submit ", " submit ");
map.put("button. reset ", " reset ");
return map;
}
public ActionForward submit(ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException {
// do submit
return mapping.findForward("success");
}
public ActionForward reset (ActionMapping mapping, ActionForm form, HttpServletRequest request,
HttpServletResponse response) throws IOException, ServletException { // do reset
return mapping.findForward("success");
}