通过代码示例跟我学Struts框架——Struts的DispatchAction组件类的应用实例
- 格式:pdf
- 大小:129.36 KB
- 文档页数:7
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
杨教授工作室,版权所有,盗版必究, 1/7页
1
1.1 Struts的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/7页
2
type="userLogin.UserLoginForm">
(2)设计完成上面的两个功能的DispatchAction类
package userLogin;
import javax.servlet.*;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.apache.struts.util.MessageResources;
import org.apache.commons.beanutils.PropertyUtils;
import org.apache.struts.actions.DispatchAction;
public class UserLoginDispatchAction extends DispatchAction
{
String userName,userPassword;
public UserLoginDispatchAction()
{
userName="";
userPassword="";
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
杨教授工作室,版权所有,盗版必究, 3/7页
3
}
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();
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
杨教授工作室,版权所有,盗版必究, 4/7页
4
return (actionMapping.findForward("logoutSuccess"));
}
}
(3)在struts-config.xml文件中进行DispatchAction类的配置
scope="request" validate="true" input="/userLogin.jsp">
input="/userLogin.jsp">
(4)执行该Web应用
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
杨教授工作室,版权所有,盗版必究, 5/7页
5
而点击注销链接,
3、LookupDispatchAction类的应用实例
(1)LookupDispatchAction类的主要功能
DispatchAction类的子类LookupDispatchAction的相应方法的执行由
struts-config.xml配置文件中的
表单中包含有多个不同功能提交的按钮,并且点击不同的按钮相应地执行不同的提交操作的
应用场合。用于对同一个页面上的多个submit按钮进行不同的响应。
(2)struts-config.xml配置文件中的相关示例