当前位置:文档之家› 通过代码示例跟我学Struts框架——Struts的DispatchAction组件类的应用实例

通过代码示例跟我学Struts框架——Struts的DispatchAction组件类的应用实例

通过代码示例跟我学Struts框架——Struts的DispatchAction组件类的应用实例
通过代码示例跟我学Struts框架——Struts的DispatchAction组件类的应用实例

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配置文件中的标签内的parameter属性值决定。它适合在一个表单中包含有多个不同功能提交的按钮,并且点击不同的按钮相应地执行不同的提交操作的应用场合。用于对同一个页面上的多个submit按钮进行不同的响应。

(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");

}

相关主题
文本预览
相关文档 最新文档