



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ActionMapping与ActionForward属性及详解2008-09-22 20:11:37|分类: Struts |标签:无 |字号大中小订阅 path属性ActionMapping URI,或者path,对用户来说就象web server上的一个文件。但实际上它并不代表一个文件。它是一个对ActionMapping的虚拟引用。因为它暴露给其它系统, path 并不真正是个逻辑名称,就象那些我们用于ActionForward中的一样。 path 可以包括反斜杠和扩展名-如果它引用一个文件系统但它们都只是一个单一名称的一部分。ActionMapping自身是一个“平面的” 名称空间,完全没有内部层次关系。它仅仅是正好使用了一个和层次性文件系统中一样的名称而已。当然, 这对处理ActionMapping仍然是有帮助的,就象它们是一个层次关系或者在同一个文件夹下的相关命令组的一部分。唯一的限制是名称必须匹配于在应用部署描述文件中为ActionServlet指定的样式。这通常是/do/*或者 *.do,但是其它相似的样式也可以使用。如果你在一个团队环境中工作,不同的团队可能有不同的 ActionMapping 名称空间使用。某些人可能工作于/customer ActionMapping, 而另一些可能工作于/vendor ActionMapping。这也可能和各个团队使用的Java 包的层次相关。因为 ActionMapping URI是逻辑的构造,所以你可以用它来以各种方式组织来适合你的项目。forward 属性当指定了forward 属性时,servlet将不会把请求传递给Action类,而是调用RequestDispatcher.forward。因为操作没有使用Action 类, 它也可以被用来进行Struts 和其它资源之间的集成,或者用来构建系统原型。forward, include, 以及 type属性是互斥的include 属性当指定了include 属性时, servlet将不会把请求传递给Action 类而是调用RequedtDispatcher.include方法。因为操作没有使用Action 类, 它也可以被用来机械进行Struts 和其它组件之间的集成。forward, include, 以及 type 属性是互斥的。type 属性大部分 mapping都会指定一个 Action 类类型,而不是一个forward 或者 include。Action 类可以被多个mapping使用。 Mapping可以指定form bean,参数,forward,或者exceptions属性。forward, include, 以及 type 属性是互斥的。classname属性如果被指定,classname 是应该用于此对象的ActionMapping子类的全限定Java类名称。这就允许你使用你自己的ActionMapping 子类来引入特定的方法和属性。参见7.4节。name属性如果在Struts 配置文件中配置了相应的formbean段的话,这个属性指定了form bean的逻辑名称。缺省情况下,这也是将form bean 放入请求或者会话上下文时使用的名称。使用该类的attribute 属性来指定不同的属性(Attribute)关键字。roles属性这个属性是一个逗号分隔的,允许访问该ActionMapping 对象的安全角色称的列表。缺省情况下,与基于容器的安全机制所使用的同一个系统将用于这里给定的角色列表。这意味着你可以通过在部署描述符中指定特定的URL模板而使用基于action的安全,或者两者都使用。安全检查由请求处理器(org.apache.struts.action.RequestProcessor)的processRoles方法处理。通过子类化请求处理器,你也可以在基于应用的安全下使用roles 属性。scope属性ActionForm bean 可以存储在当前的请求或会话范围中(这样它可以服务于另外的请求)。虽然大部分开发人员使用请求范围来存储ActionForm, 框架的缺省设置却是会话范围 validate属性ActionForm 生命周期内的一个重要步骤是在其数据提供给业务层之前需要进行校验。当mapping 的validate 属性设置为true时,ActionServlet将调用ActionForm的 validate 方法。如果 validate 返回false,请求将被转发到input 属性指定的资源。经常,开发人员将为每个数据输入表单创建两个mapping。一个mapping 将使 validate 设置为 false, 所以你可以创建一个空的表单。另一个则设置validate 为true,用来提交完整的表单。input属性当validate被设置为true时,重要的是需要提供一个有效的输入路径。这也是当ActionFormvalidate 方法返回 false时,控制应该被传递到的地方。通常这是一个表现页面。有时也可以是另外一个用来产生页面所需要的数据对象的Action path (其 validate 必须设置为false)。输入转发在Struts 1.0中,ActionMapping的 input 属性通常是一个字面的URI。在Struts 1.1中,它也可以是一个ActionForward 的名称。ActionForward 被获取之后,其path 属性被用作input属性。这也可以是一个全局或者局部转发。这儿为了使用 ActionForward而不是字面的path, 可以设置这个模块的 元素的inputForward 属性为 true:parameter属性这个普通的paramenter属性允许Action能够在运行时被配置。许多标准的Struts Action都使用这个属性,标准的Scaffold Action也经常使用它。Parameter属性可以包含URI, 方法名称,类名称,或者其它一些Action在运行时可能需要的信息。这种灵活性允许一些Action履行双倍或者三倍的职责,削减应用所需的不同的类的数量。在一个Action 类中,parameter属性是从传递到perform的mapping中取得的:parameter = mapping.getparameter();attribute属性不时地,你可能需要同时在同一个上下文中保存同一个ActionForm 的在两份拷贝。这在ActionForm被存于会话上下文中作为工作流的一部分时,经常发生这种情况。为了避免它们之间的名称冲突,你可以使用 attribute 属性来给一个 ActionForm bean 一个不同的名称。另一个方法是在配置中定义另一个ActionForm bean,使用相同的类型但使用不同的名称。prefix和suffix属性与 attribute属性一样, prefix 和suffix 属性可用来避免应用系统中的名称冲突。如果指定了这个属性,这就表明允许在属性名称前面加上前缀或者后缀,形成它们从请求中被组装时的一个别名。如果指定了前缀 this,那么在ActionForm组装时:thisName=McClanahan相当于name=McClanahan而它们都可以通过调用getName(McClanahan);取得。这并不影响属性如何被标签扩展输出。它只影响到自动组装机制如何从请求中感知它们unknown ActionMapping在Web上冲浪时,大都遇到过讨厌的404 pages not found信息。大部分web server 都提供一些特殊的特征来处理对未知页面的请求,所以 webmaster 可以将用户引导到正确的方向上。Struts 提供了一个类似的服务来处理404错误即unknown ActionMapping。在Struts 配置文件中,你可以指定一个ActionMapping 来接收所有与其它ActionMapping不相匹配的请求:如果没有设置它,没有匹配对的ActionMapping请求就会抛出:400 Invalid path /notHere was Requested请注意通过对ActionMapping请求, 我们的意思是URI首先必须匹配为servlet指定的前缀或者后缀 (通常是 /do/* 或者 *.do)。对于其它样式的请求, 无论好坏,都将被容器中的其它servlet处理:/do/notHere (goes to the unknown ActionMapping)/notHere.txt(goes to the Container)比较多,不过常用的也就是path,type,scope,name,parameter如果要在form里做验证要写input,validate.ActionForward:ActionForward是Struts的核心类之一,其基类仅有4个属性:name / path / redirect / classname。在基于Struts的Web应用程序开发过程中,Action操作完毕后程序会通过Struts的配置文件struts-config.xml链接到指定的ActionForward,传到Struts的核心类ActionServlet,ActionServlet使用ActionForward提供的路径,将控制传递给下一个步骤。ActionForward控制接下来程序的走向。ActionForward代表一个应用的URI,它包括路径和参数,例如:path=“/modify.do?method=edit&id=10”ActionForward的参数除了在struts-config.xml和页面中设置外,还可以通过在Action类中添加参数,或重新在Action中创建一个ActionForward。在ActionForward中有一个重要的属性redirect,当redirect=false时,将保存存储在http请求和请求上下文中的所有内容,仅在同一个应用中可用。当redirect=true时,Web客户端进行一次新的http请求,请求的资源可以在同一个应用中,也可以不在,原来的请求参数不再保存,原来的请求上下文也被清除,新的http请求仅包含ActionForward的path属性里所包含的参数。如果在同一个应用中,用户会话的上下文会被维护。ActionForward分为全局转发和局部转发,Action的Mapping对象的findForward方法首先会检查局部转发列表,查找失败就会到全局转发列表中查找。书写格式中,我们一般将全局变量定义为String常数,避免误解,使得转发列表结构清晰易读。在项目开发过程中经常碰到一种情况,当页面已经改变了,浏览器中的地址如/modify.do或/modify.jsp却没有变化,当时没有考虑这么细,虽然存在疑问,但没有影响到程序功能的实现,因此忽略过去了,今天查找了一些资料才弄清
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 吹填砂施工方案下载
- 酶制剂提取工技能巩固考核试卷及答案
- 婴童店龙抬头营销方案
- 长春商业建筑方案设计公司
- 地矿修复材料成本分析报告
- 工艺染织品制作工主管竞选考核试卷及答案
- 人行木栈道拆除施工方案
- 书店建筑方案设计图
- 理财产品的营销方案
- 交通工程系汽车营销方案
- pos机风险管理办法
- 2025年京东集团招聘笔试指南与面试技巧
- 起重机械定期检查与维护方案
- 2025年行业机器人边缘计算技术应用与场景分析
- 国际物流运输合同(标准版)
- 动物样品采集培训课件
- 2025中国工业传感器行业市场白皮书
- (2025年)医疗机构工作人员廉洁从业九项准则考核试题(+答案)
- 手机桌面市场深度解析
- 人工智能在幼儿语言教育活动中的应用
- 建筑公司部门保密管理规定
评论
0/150
提交评论