`

ActionMapping的属性

阅读更多

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时,重要的是需要提供一个有效的输入路径。这也是当ActionForm
validate 方法返回 false时,控制应该被传递到的地方。通常这是一个表现页面。有时也
可以是另外一个用来产生页面所需要的数据对象的Action path (其 validate 必须设置为
false)。

输入转发
在Struts 1.0中,ActionMapping的 input 属性通常是一个字面的URI。在Struts 1.1中,它也
可以是一个ActionForward 的名称。ActionForward 被获取之后,其path 属性被用作input
属性。这也可以是一个全局或者局部转发。
这儿为了使用 ActionForward而不是字面的path, 可以设置这个模块的<controller> 元
素的inputForward 属性为 true:
<controller 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,使用相同的类型但使用不同的名称。

divfix和suffix属性
与 attribute属性一样, divfix 和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不相
匹配的请求:
<action
name="/debug"
forward="/pages/debug.jsp"/>
如果没有设置它,没有匹配对的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.

分享到:
评论

相关推荐

    structs程序设计从入门到精通word文档

    7.2 定义ActionMapping属性 12 7.3 使用局部和全局ActionForward 12 第8章 设计、使用Action 12 8.1 理解Action 12 8.2 使用基本的Action 13 8.3 Action的实践 13 8.4 Struts中的Action类的工作机制; 13 8.5 Struts...

    Struts in Action中文版

    1. 介绍.........................................................................................................18 1.1. 关于本书..........................................................................

    struts in Action

    1. 介绍.........................................................................................................18 1.1. 关于本书...........................................................................

    Struts_config.xml详解

    parameter="" //指定Actgion的配置参数,在Action类的execute()方法中,可以调用ActionMapping对象的getParameter()方法来读取该配置参数。(相当于初始化赋值) &gt;&gt;&gt; prefix=""// 指定填充当前 Action 关联 FormBean...

    Struts框架及标记库

    1.3.3 ActionMapping类 10 1.3.4 Action类 10 1.3.5 ActionForm类 11 1.3.6 ActionForward类 12 1.3.7 错误处理 12 2 Struts标记库 14 2.1 Struts标记库 14 2.1.1 Bean标记 14 2.1.1.1 Bean复制标记 14 2.1.1.2 定义...

    Struts中文手册[文字版][中文]

    1.5. ActionMapping 类8 1.6. Action 类.8 1.6.1. Action 类的方法.9 1.7. ActionForm类9 1.8. ActionForward 类.10 1.9. 错误处理.11 1.9.1. ActionError类11 1.9.2. ActionError类11 2. Struts 标记库13 2.1. Bean...

    ssh(structs,spring,hibernate)框架中的上传下载

     如第7所示,通过sessionFactory的lobHandler属性进行注入。  业务层  1、业务层接口  "面向接口而非面向类编程"是Spring不遗余力所推荐的编程原则,这条原则也已经为大部开发者所接受;此外,JDK的动态代理只...

    struts中文学习资料.doc

    3.3 ActionMapping类……………………………………………………………………9 3.4 Action类……………………………………………………………………………9 3.5 ActionForm类………………………………………………...

    Spring面试题

    -(5)ActionServlet根据ActionMapping所包含的映射信息决定将请求转发给哪个Action,如果相应的 Action实例不存在,就先创建这个实例,然后调用Action的execute()方法; -(6)Action的execute()方法返回一个ActionForward...

    Java Oracle分页处理

    //保存一个PaginationBean的对象,用于在页面中调用其中的属性,判断页面的跳转 request.setAttribute("page", page.getPagePagination()); //用于其他页面调用PaginationBean的对象 request.getSession...

    Struts原理、开发及项目实施

    另外,Struts还提供了一系统实用对象:XML处理、通过Java reflection APIs自动处理JavaBeans属性、国际化的提示和消息等。 &lt;br/&gt; 7、一个实例 &lt;br/&gt; 一个用户注册系统,用户通过网页输入相关信息...

    J2EE电子商务系统开发从入门到精通

    2.4.3 ActionMapping类..... 34 2.5 Struts模型组件类..... 35 2.6 Struts的配置文件..... 38 2.6.1 web.xml文件..... 38 2.6.2 Struts-config.xml文件..... 39 2.7 Struts标签库..... 43 2.7.1 Bean标签库..... 43 ...

Global site tag (gtag.js) - Google Analytics