`

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.

分享到:
评论

相关推荐

    js宝方法方法法笑嘻嘻典

    1. **ActionMapping属性**:ActionMapping对象包含了Action的所有配置信息,如Action的路径、方法、转发等。它还管理着局部和全局ActionForward的映射。 2. **嵌套的组件**:ActionMapping可以包含多个Action...

    Struts_Api

    通过这个文件,开发者可以指定 Action 类、ActionMapping 属性以及 ActionForm 的关联。 7. **Interceptor**:拦截器是 Struts 2 中的一个重要概念,它允许在 Action 被调用之前和之后插入自定义逻辑。拦截器可以...

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

    - **定义ActionMapping属性**:详细说明了如何设置ActionMapping的各个属性。 - **使用局部和全局ActionForward**:解释了局部和全局ActionForward的区别及其应用场景。 #### 设计、使用Action - **理解Action**:...

    struts从入门到精通.doc

    - **定义ActionMapping属性** - 讨论了如何设置ActionMapping的各种属性。 - **使用局部和全局ActionForward** - 解释了局部和全局ActionForward的区别及其使用场景。 - **第8章 设计、使用Action** - **理解...

    web_xml中ActionServlet中的属性

    13. **mapping**: 用于定义ActionMapping实现的Java类名。现在推荐在每个`&lt;action&gt;`元素中使用`class-name`属性,或在模块应用的`&lt;action-mappings&gt;`元素的`type`属性配置。 14. **maxFileSize**: 设定文件上传的...

    Struts1教程之ActionMapping_动力节点Java学院整理

    ActionMapping类中有三个重要的属性:path、type和forwardMap。其中,path属性指定了Action的路径,type属性指定了Action的类型,而forwardMap属性则指定了Action的转发映射关系。 ActionMapping的实现机制是通过...

    提交多行数据到Struts的ActionForm的List属性中

    public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { MyForm myForm = (MyForm) form; List&lt;Item&gt; items = ...

    ActionForm属性中存在对象数组如何处理

    当ActionForm中的属性涉及到对象数组时,处理方式就变得稍微复杂一些。以下将详细介绍如何处理ActionForm属性中存在对象数组的情况。 首先,我们需要创建一个实体类(Entity),例如`Student`,它包含一些基本属性...

    Struts2框架的配置

    在Struts2框架中,核心概念包括Action、ActionMapping、Interceptors、ValueStack、Results等,而其中的配置是Web开发的重要部分,允许开发者以声明的方式设置应用的行为。本文将详细介绍Struts2框架中struts.xml...

    strutsinaction

    当一个请求到达时,`ActionServlet`使用`path`属性来选择对应的`ActionMapping`。一组`ActionMapping`对象被放置在一个`ActionMappings`集合(org.apache.struts.action.ActionMappings)中。最初,`ActionMapping`...

    BeanUtils的应用

    在Java开发中,尤其是MVC框架如Struts中,`BeanUtils`经常用于对象之间的属性拷贝、类型转换以及方法调用等操作。让我们详细探讨一下`BeanUtils`的主要功能和方法。 ### BeanUtils核心功能 1. **对象克隆与属性...

    Struts2 S2-033漏洞分析1

    后面的内容作为 ActionMapping 的 method 属性。但是这个 method 属性未做任何处理,导致了后面的代码执行。 在分析 S2-033 漏洞时,我们发现了 Struts 2 的一些关键组件,如 RestActionMapper.java 和 ...

    java面试知识点总结--Struts.pdf

    Action实现了具体控制逻辑,ActionMapping定义了请求与Action之间的映射,ActionForward则指示请求转发的方向。 2. **Struts响应客户请求的工作流程**: - 检索与请求匹配的ActionMapping,若不存在则返回错误信息...

    SSS框架详解

    2.配置文件(struts-config.xml):用于配置 Struts 框架的各个组件,例如 ActionMapping、FormBean 等。 3. ActionMapping 节点:用于配置请求映射关系,例如将请求映射到特定的业务逻辑对象。 4. RequestProcessor...

    servelt模拟struts1框架

    创建一个类来封装请求参数,这个类可以包含与表单字段相对应的属性和getter、setter方法。然后,Servlet将请求参数填充到ActionForm实例中,为业务处理提供数据。 执行完业务逻辑后,结果通常会返回一个视图名称,...

    王者归来之达内内部绝密Struts课件.doc

    2. 创建或获取与`ActionMapping`关联的`ActionForm`实例,如果配置了`ActionForm`,它会使用请求参数填充`ActionForm`的属性。 3. 调用`ActionMapping`中指定的`Action`类的`execute`方法,传递`ActionMapping`、`...

    Struts教程

    2. 根据`ActionMapping`,创建或获取`ActionForm`bean,填充其属性。 3. 执行`Action`的`execute`方法,处理业务逻辑。 4. `Action`返回一个`ActionForward`对象,指示响应的转发路径。 5. `ActionServlet`根据`...

    Struts的资源绑定.rar

    在Struts2中,`name`属性对应Action类的属性,`label`属性用于显示标签。提交时,Struts2会使用OGNL自动将表单数据映射到Action的属性。 4. **国际化与资源绑定** Struts框架支持国际化,可以通过资源文件(如....

    学生管理的Struts框架开发实例

    在学生管理应用中,ActionForm可能包含学生的属性如ID、姓名、年龄等,这些属性与数据库中的字段相对应。 3. **ActionMapping**: 在配置文件(如struts-config.xml)中,ActionMapping定义了URL到Action的映射。...

Global site tag (gtag.js) - Google Analytics