- 浏览: 253136 次
- 性别:
- 来自: 湖南
文章分类
- 全部博客 (194)
- java (23)
- 数据结构和算法 (5)
- oracle (7)
- sql server (1)
- mysql (5)
- Ajax (5)
- JSTL (7)
- jsp (20)
- 组件 (11)
- C++可视化 (0)
- javascript (14)
- c/c++ (0)
- XML (6)
- 只是扩宽 (0)
- 设计模式 (3)
- 正则表达式 (3)
- 心情和感悟 (4)
- ACM (3)
- HTML/css (9)
- 软件破解 (2)
- spring (1)
- struts (15)
- hibernate (10)
- Servlet (2)
- sql (2)
- 面试题 (1)
- struts2 (22)
- Unix/Linux (0)
- javamail (1)
- svn (1)
- 异常 (3)
- EJB (3)
- jquery (2)
- android (1)
最新评论
-
lianlupengUestc:
From my testing (Struts2 versio ...
struts2 注解 -
yulongxiang:
非常感谢!!!!!!!
使用动态ActionForm(转)
DispatchAction的使用:
* DispatchAction中的execute方法,如果覆盖必须显示调用super.execute()
* parameter参数值不能是execute和perform
* <action>标签中的parameter的含义
:parameter="method"
* 了解DispatchAction中的unspecified方法的含义
:在没有指定方法名的时候采用
一个验证信息正确性loginValidate,一个删除一个记录deleteUser方法,
用method=方法名来指定要调用的方法。
新建一个jsp页面login.jsp,注意:form表单的action的值:::
再建一个jsp页面delete.jsp,主要内容如下:::
根据用户名删除。
在struts-config.xml配置一个parameter="method"属性键值对:
第二种
这一种的struts-config.xml与第一种的相同,也要有parameter=""属性。
分析以下第一种方式:Action中有两个方法,对应两个jsp页面、具体为对应两个表单、两个action="/loginAction.do"路径,
而第二种方法是只有一个jsp页面、即一个表单,具体如下:
上面的表单有两个提交按钮,特别的是有一个hidden隐藏域的作用。
再就是验证的问题:
一般流程是如果表单数据未通过ActionForm的验证,则会返回struts-config.xml中该Action对应的input指定的路径。
但在继承的DispatchAction类中,多个Action指向同一个配置文件,举个小例:
现有两个页面(用户注册页面、用户资料修改页面)指向同一Action(继承自DispatchAction)和ActionForm(验证信息基本相同),当ActionForm验证失败时,分别需要返回到注册页面和修改页面,但struts-config.xml中的input只能设置一个值,这时怎么办?
虽然你的XXXDispatchAction的class实例只有一个,例如com.xyh.emp.EmployeeAction, 但是在struts-config.xml的ActionMappings里面可以映射为多个 <action> 标记,例如:
那么在JSP里面就可以这么分别描述表单标签。
• <html:form action= "registerEmployee.do "/>
• <html:form action= "editEmployee.do "/>
这样你不仅能为不同的行为指定不同的“action”, 自然就可以使用不同的input页, 分别指定validate是true或者false, 甚至可以使用不同的ActionForm。
说白了就是DispatchAction的类实例只有一个, 但是可以通过不同的path映射为不同的“行为”, 这不是Struts的缺点,反而正好是它的优点。
Validator框架对ActionFrom进行验证的时候有两种识别FormBean的方式, 一种是使用BeanName,就是action标签里面的name= "employeeForm ", 另一种是使用path,就是action标签里面的path= "/regEmployee ", 那么在使用了DispatchAction的情况下,如果使用Validator进行验证的话, 你的XXXXForm只需要继承ValidatorActionForm或DynaValidatorActionForm, 然后在validation.xml文件里面form标签里面的name属性使用该映射action的path就可以了。
* DispatchAction中的execute方法,如果覆盖必须显示调用super.execute()
* parameter参数值不能是execute和perform
* <action>标签中的parameter的含义
:parameter="method"
* 了解DispatchAction中的unspecified方法的含义
:在没有指定方法名的时候采用
public class LoginAction extends DispatchAction { public ActionForward loginValidate(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { LoginForm loginForm = (LoginForm) form; ActionForward forward = new ActionForward(); ... return forward; } public ActionForward deleteUser(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) { LoginForm loginForm = (LoginForm) form; ActionForward forward = new ActionForward(); ... return forward; } }
一个验证信息正确性loginValidate,一个删除一个记录deleteUser方法,
用method=方法名来指定要调用的方法。
新建一个jsp页面login.jsp,注意:form表单的action的值:::
<html:form action="/loginAction.do?method=loginValidate" method="POST"> 用户名: <html:text property="au_lname"/> <br> <html:submit property="submit" value="Submit"/> <br> <html:reset value="Reset"/> </html:form>验证信息。
再建一个jsp页面delete.jsp,主要内容如下:::
<html:form action="/loginAction.do?method=deleteUser" method="POST"> 用户名: <html:text property="au_lname"/> <br> <html:submit property="submit" value="Submit"/> <br> <html:reset value="Reset"/> </html:form>
根据用户名删除。
在struts-config.xml配置一个parameter="method"属性键值对:
<action-mappings> <action name="loginForm" parameter="method" path="/loginAction" scope="request" type="com.aptech.dispatchactiondemo.action.LoginAction"> <forward name="error" path="/error.jsp" /> <forward name="success" path="/success.jsp" /> <forward name="deletesuccess" path="/deletesuccess.jsp" /> </action> </action-mappings>
第二种
这一种的struts-config.xml与第一种的相同,也要有parameter=""属性。
分析以下第一种方式:Action中有两个方法,对应两个jsp页面、具体为对应两个表单、两个action="/loginAction.do"路径,
而第二种方法是只有一个jsp页面、即一个表单,具体如下:
... <h1>下面表单中的“添加”和“修改”按钮都可以提交表单,但不是JSF</h1> <p> <html:form action="/demoAction.do" method="POST"> <%--提交的路径还是*.do --%> userName: <html:text property="userName"/> <br> password: <html:password property="password"/> <br> <input type="hidden" name="method" value="add"/> <%-- 添加了一个hidden隐藏文本域,name的值method与 struts-config.xml里面的parameter的值method相同 --%> <input type="submit" onclick="method.value='add'" value="添加"/> <input type="submit" onclick="method.value='modify'" value="修改"/> <%--两个sumbit按钮,在onclick方法上更改method的值--%> </html:form> ...
上面的表单有两个提交按钮,特别的是有一个hidden隐藏域的作用。
再就是验证的问题:
一般流程是如果表单数据未通过ActionForm的验证,则会返回struts-config.xml中该Action对应的input指定的路径。
但在继承的DispatchAction类中,多个Action指向同一个配置文件,举个小例:
现有两个页面(用户注册页面、用户资料修改页面)指向同一Action(继承自DispatchAction)和ActionForm(验证信息基本相同),当ActionForm验证失败时,分别需要返回到注册页面和修改页面,但struts-config.xml中的input只能设置一个值,这时怎么办?
虽然你的XXXDispatchAction的class实例只有一个,例如com.xyh.emp.EmployeeAction, 但是在struts-config.xml的ActionMappings里面可以映射为多个 <action> 标记,例如:
<action path= "/registerEmployee " input= "/registerEmployee.jsp " parameter= "method " name= "employeeForm " attribute= "employeeForm " scope= "request " validate= "true " type= "com.xyh.emp.EmployeeDispatchAction "> <forward name= "detail " path= "/detailEmployeeInfo.jsp " /> </action> <action path= "/editEmployee " input= "/editEmployee.jsp " parameter= "method " name= "employeeForm " attribute= "employeeForm " scope= "request " validate= "true " type= "com.xyh.emp.EmployeeDispatchAction "> <forward name= "detail " path= "/detailEmployeeInfo.jsp " /> </action>
那么在JSP里面就可以这么分别描述表单标签。
• <html:form action= "registerEmployee.do "/>
• <html:form action= "editEmployee.do "/>
这样你不仅能为不同的行为指定不同的“action”, 自然就可以使用不同的input页, 分别指定validate是true或者false, 甚至可以使用不同的ActionForm。
说白了就是DispatchAction的类实例只有一个, 但是可以通过不同的path映射为不同的“行为”, 这不是Struts的缺点,反而正好是它的优点。
Validator框架对ActionFrom进行验证的时候有两种识别FormBean的方式, 一种是使用BeanName,就是action标签里面的name= "employeeForm ", 另一种是使用path,就是action标签里面的path= "/regEmployee ", 那么在使用了DispatchAction的情况下,如果使用Validator进行验证的话, 你的XXXXForm只需要继承ValidatorActionForm或DynaValidatorActionForm, 然后在validation.xml文件里面form标签里面的name属性使用该映射action的path就可以了。
发表评论
-
struts2-Action笔记
2010-09-12 19:10 7871。默认action处理 <?xml version ... -
struts模式匹配
2010-09-09 23:25 852<?xml version="1.0&qu ... -
org.apache.commons.beanutils.BeanUtils简介[转]
2010-09-09 08:54 876BeanUtils简读本 一 ... -
ForwardAction简介
2010-09-08 12:42 793<action-mappings> & ... -
struts异常处理
2010-09-08 12:26 1047struts-config.xml <global- ... -
struts对国际化的支持
2010-09-01 20:30 9381、struts国际化配置 *在struts-config. ... -
ActionForward的使用
2010-08-31 19:10 6691、了解redirect属性 <forward nam ... -
JSP Struts之HTML标签库详解(转)
2010-08-30 22:57 715Struts提供了五个标签库,即:HTML、Bean、Lo ... -
struts的一些组成部分(转)
2010-08-30 22:54 7231、ActionMapper和ActionMappin ... -
ActionMapping属性
2010-08-30 22:01 941属性描述 Path Action类的相对路径 Name ... -
ActionForm类型的自动转换和自定义转换器的实现
2010-08-30 17:48 1257测试ActionForm类型的自动转换 *boolean ... -
struts文件上传
2010-08-30 17:40 1009index.jsp: li>测试struts上传< ... -
使用动态ActionForm(转)
2010-08-30 14:46 3731在Struts框架中,ActionForm对象用来包装HTML ... -
MVC基本架构
2010-08-29 23:02 980MVC即Model-View-Controller(模型-视图 ...
相关推荐
以下是一个简单的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框架的工作...