1,先写一个CommonAction类
public class CommonAction extends DispatchAction {
private static ApplicationContext context = null;
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
// Identify the request parameter containing the method name
String parameter = mapping.getParameter();
if (parameter == null) {
String message = messages.getMessage("dispatch.handler", mapping
.getPath());
log.error(message);
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,
message);
return (null);
}
// Identify the method name to be dispatched to.
// dispatchMethod() will call unspecified() if name is null
String name = request.getParameter(parameter);
////////////////////////////////////////////////////////////
// to do : check the authorization...
////////////////////////////////////////////////////////////
// Invoke the named method, and return the result
return dispatchMethod(mapping, form, request, response, name);
}
}
该类的主要方法是dispatchMethod负责调用Action类的name方法
2.现在具体写一个类,该类包含save和list方法
public class ListAllLeavesAction extends CommonAction {
public ActionForward list(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {
LybanForm listForm = (LybanForm)form;
Session session = HibernateUtil.currentSession();
Criteria c = session.createCriteria(Ly.class);
listForm.setFields(c.list());
return mapping.findForward("list");
}
public ActionForward save(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws Exception {
LybanForm addLybanForm = (LybanForm) form;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date now = new Date();
Session session = HibernateUtil.currentSession();
Transaction t = session.beginTransaction();
Ly ly = new Ly();
ly.setMail(addLybanForm.getMail());
ly.setMessages(addLybanForm.getMessages());
ly.setName(addLybanForm.getName());
ly.setTitle(addLybanForm.getTitle());
ly.setTime(sdf.format(now));
session.save(ly);
t.commit();
HibernateUtil.closeSession();
return mapping.findForward("success");
}
}
3.现在看一下页面是如何调用ListAllLeavesAction类的save方法
<body>
<html:form action="/jsp/lyb/manageLyban" method="post">
<table width="90%" border="1" align="center" bordercolor="#CCCCCC">
<tr>
<input type="hidden" name="method" value="save"/>//该隐藏域的method属性的值就是ListAllLeavesAction类对应的save方法的名字
<td width="100" align="right" class="tdright">
留言标题<span class="red">*</span>: </td>
<td width="185" class="TDTEXT2">
<input name="title" type="text">
</td>
<td width="98" align="right" class="tdright">
<div align="right">留言人:</div>
</td>
<td width="279" class="TDTEXT2"><input name="name" type="text"> </td>
</tr>
<tr>
<td align="right" class="tdright">
<div align="right">
留言内容<span class="red">*</span>: </div> </td>
<td width="185" class="TDTEXT2"><input name="messages" type="text"></td>
<td align="right" class="tdright">
<div align="right">
留言人Email:</div> </td>
<td width="279" class="TDTEXT2"><input name="mail" type="text"></TD>
</tr>
<tr align="center">
<td height="33" colspan="5">
<input type="button" value="确定" onClick="submit();" />
</td>
</tr>
</table>
</html:form>
</body>
</html>
这样就会调用ListAllLeavesAction类里面的save方法
4.Struts配置文件的配置
<struts-config>
<form-beans>
<form-bean name="addLybForm" type="com.dragonsoft.lyb.struts.form.LybanForm" />
</form-beans>
<action-mappings>
<action attribute="addLybForm" parameter="method" input="/jsp/addLyban.jsp" name="addLybForm" path="/jsp/lyb/manageLyban" scope="request" type="com.dragonsoft.lyb.struts.action.ListAllLeavesAction">
<forward name="success" path="/jsp/lyb/manageLyban.do?method=list"/>
<forward name="list" path="/jsp/listAllLeaves.jsp" />
</action>
</action-mappings>
</struts-config>
注意的是parameter的值要跟页面隐藏域method的名字一样
这是一个简单的例子,想必大家也看的懂,我就不需要再罗嗦了。
分享到:
相关推荐
以下是一个简单的DispatchAction使用步骤: 1. **创建DispatchAction类**:首先,你需要继承自org.apache.struts.actions.DispatchAction,创建一个新的Action类。在这个类中,你需要定义一系列处理特定业务的方法...
解决Struts1.x中使用Validator框架对DispatchAction不同方法使用不同的字段验证 你可以先参看我的blog文章:http://blog.csdn.net/qjyong/archive/2008/11/16/3311688.aspx 再决定是否下载。
在Struts框架中,`DispatchAction`和`MappingDispatchAction`是两种常见的控制器组件,用于处理用户请求。它们是Action接口的实现类,主要用于映射HTTP请求到特定的方法,从而实现业务逻辑的分发。 首先,让我们...
下面我们将详细探讨`DispatchAction`的使用步骤和关键点: 1. **创建子类**:首先,你需要创建一个继承自` DispatchAction `的Java类。在这个类中,你可以定义自己的业务逻辑方法,比如`executeSave()`、`...
DispatchAction 的 parameter 属性是给 DispatchAction 使用的,你的类要继承 DispatchAction 类,而不是普通的 Action,Action 只会执行 execute 方法,DispatchAction 会根据 parameter 的值执行特定的方法。...
使用DispatchAction的另一个优点是,它可以结合Struts的国际化和主题功能,为不同的用户群体提供定制的视图。此外,通过将Action类中的方法组织成逻辑相关的组,可以更方便地进行权限控制和事务管理。 然而,需要...
总结来说,"Struts中等同于DispatchAction类方法"是一种在不直接使用`DispatchAction`基类的情况下,通过前端传递方法名并在后端使用反射调用相应方法的技术,以实现多请求映射到单个Action类的多个方法。...
**1.1 为什么要使用 DispatchAction** 在传统的 Struts 应用中,每一个业务逻辑操作往往都需要创建一个单独的 Action 类。例如,在一个文章管理系统中,可能需要为文章的添加、查看和搜索等功能分别编写 `...
以下是对文件上传和DispatchAction使用的一些详细说明: 1. **文件上传流程**: - **表单提交方式**:文件上传必须使用HTTP的POST方法,因为GET方法无法处理大容量的数据,而文件通常较大。 - **表单编码**:`...
5. **在JSP页面上展示**:最后,在JSP页面(如paging.jsp)上,你可以使用JSTL或其他标签库来遍历分页数据,并提供导航链接,让用户可以跳转到其他页码。 总结,通过结合Struts的DispatchAction和存储过程,我们...
在本项目中,我们关注的是"Struts+Oracle实现DispatchAction类",这是一个将Struts框架与Oracle数据库结合使用,以实现业务逻辑处理的例子。 DispatchAction是Struts框架中的一个关键组件,它扮演着控制器的角色,...
最近自学java中的框架-struts写了一些小例子,这都是很经典的程序,如果大家瞧得起要下载去看看,顺便给俺找找不足的地方。我的qq 821865130 email qingtian_hechen@163.com 希望大家能多多给我帮助...在此谢谢各位!!
在本篇文章中,我们将深入探讨`DispatchAction`的工作原理、优点以及如何在实际项目中使用。 `DispatchAction`是Struts提供的一个扩展自`Action`类的预定义动作,它的主要目的是通过不同的方法来处理来自客户端的...
03Struts2常用标签&DispatchAction.rar03Struts2常用标签&DispatchAction.rar03Struts2常用标签&DispatchAction.rar03Struts2常用标签&DispatchAction.rar
Struts1中怎样实现DispatchAction配置多个input属性\Struts1中怎样实现DispatchAction配置多个input属性
2. **DispatchAction的使用**: - **配置Action**:在struts-config.xml中,我们需要定义DispatchAction,指定其对应的类以及各个请求参数与方法的映射关系。例如: ```xml <param name="operation">add `...
这个"SSH整合继承DispatchAction的简单例子"是一个演示如何将这三个框架集成在一起,并利用Struts的DispatchAction来实现多请求分发的功能。 首先,让我们深入理解SSH框架的核心功能。Spring是一个强大的依赖注入...
本文将深入解析Struts中的控制器组件,特别是DispatchAction的使用。 在Struts框架中,控制器主要由ActionServlet和Action类组成。ActionServlet作为前端控制器,负责拦截所有HTTP请求,并根据配置文件(struts-...
6. **与现代框架对比**:虽然DispatchAction在早期的Struts应用中广泛使用,但在Spring MVC和Play Framework等现代Java Web框架中,这种模式已被更简洁、可扩展的方式所取代,如使用注解驱动的方法映射。 7. **学习...
Struts1.2是一个经典的Java Web框架,它在企业级应用开发中被广泛使用,尤其在Web MVC(Model-View-Controller)设计模式的应用上。本示例是基于Struts1.2实现的一个计算器程序,旨在帮助初学者理解Struts框架的工作...