4. ActionMapping路由
ActionMapping (org.apache.struts.action.ActionMapping) 描述了框架是如何处
理每一个离散的业务操作 (或 action)的。 在Struts中,每个ActionMapping 通过其path 属性和一个特定的URI 相关。当一个请求到来, ActionServlet 使用 path 属性来选择对应的ActionMapping。一组ActionMapping 对象被放在一个ActionMappings 集合之中(org.apache.struts.action.ActionMappings)。
ActionMapping工作起来就像是ActionServlet的一个路由联络官。取决于mapping 如何被填写设置,请求可能被传递到任何地方。ActionMapping表达了Struts 应用的核心设计。如果你想知道一个 Struts 应用是如何工作的,可以从ActionMapping开始着手。如果你想知道如何写一个新的Struts 应用,也请从ActionMapping开始。Mapping处于每个Struts 应用的绝对核心。
4.1. ActionMapping 目录
ActionMapping将对Struts 应用中有效的业务逻辑进行分类。当一个请求到达时,
ActionServlet在ActionMapping目录中查找对应条目,并调用相应的Action Bean。
ActionServlet 使用ActionMapping bean 来决定接下来该做什么。它也许需要将控制转发到其它资源。或者也许它需要组装并且校验一个 ActionForm bean。某些时候,它也许会将控制传递给一个Action 对象,并且当Action 返回时,它可能会查找和这个mapping相关的ActionForward。
4.2. ActionMapping 属性
path: 来自于请求的URI 路径,用来选择该mapping。
forward: 通过一个forward 服务这个请求的上下文相关的资源路径。实际上forward,include,type 属性中的一个,必须指定。
或include:通过一个include 服务这个请求的上下文相关的资源路径。
或type: 可选,表明一个org.apache.struts.action.ActionMapping的子类名称,在实例化这个mapping 时使用。
classname: 该Mapping 使用的Action 类的全限定名称
name: 与该Mapping 相关的form bean 的名称,如果有的话。这不是类名称。而是在form bean 配置中使用的逻辑名称。
roles: 可以访问该mapping 的安全角色列表。
scope: 范围(请求或会话)识别符,如果有的话。与该mapping 相关的formaBean 在其中创建。
validate: 如果与该mapping 相关的 form bean 的 validate 方法 (如果有)需要被调用,则设置为true。
input: 输入表单的上下文相关的路径,如果校验错误,控制应该被返回到该表单。可以是任何HTML,JSP,VM,或者另一个ActionMapping。
parameter: 通用配置参数,用来向ActionMapping 选定的Action 传递额外的参数信息。
attribute: 果它不是 bean 的特定名称的话,则表示form bean 在要在其中被访问的请求-范围或者会话-范围的属性名称。
prefix: 如果有的话,用来将请求参数名称匹配到 form bean 属性名称的前缀。
suffix: 如果有的话,在组装Actionform bean 属性时,用来匹配请求参数名称的后缀。
unknown:如果该 mapping 要被配置为应用的缺省mapping(处理那些没有被其它mapping 处理的请求),可设置为true。在一个应用中仅有一个mapping 可定义为缺省的 unknown mapping。
forwards(s): 该mapping 使用的ActionForward,如果有的话。
exception(s):该mapping 使用的ExceptionHandler 如果有的话。
4.3. 自定义ActionMapping配置
4.3.1. web.xml配置
<init-param>
<param-name>mapping</param-name>
<param-value>app.MyActionMapping</param-value>
</init-param>
4.3.2. struts-config.xml配置<action-mappings>
<action-mappings type="app.MyActionMapping">
4.3.3. struts-config.xml配置classname
<action classname="app.MyActionMapping">
4.4. 缺省 ActionMapping 类
org.apache.struts.action.SessionActionMapping 缺省时,scope 属性session
org.apache.struts.action.RequestActionMapping 缺省时,scope 属性Request
它们可以选作为缺省设置,或者用作你的子类的基类。
框架的缺省设置为SessionActionMapping,所以scope 属性的缺省设置为session。
分享到:
相关推荐
这篇笔记主要围绕Struts框架的核心概念、工作原理以及实际应用进行深入探讨。 一、Struts框架概述 Struts提供了一种组织应用程序结构的方式,它将业务逻辑、控制流程和表现层分离,使得开发人员可以更专注于业务...
3. ActionMapping:映射Action与URL的关系,决定请求如何路由到特定的Action。 4. ValueStack:存储Action的属性值,方便在视图层取值展示。 5. Interceptors(拦截器):可插拔的处理链,可以实现事务管理、日志、...
框架通过配置文件(struts-config.xml)来定义Action类和相应的映射,这使得请求可以被正确路由到对应的业务逻辑。 2. **Model(模型)** 模型组件负责处理业务逻辑,通常由JavaBeans或Entity Beans组成。它们与...
3. **ActionMapping**:ActionMapping定义了请求URL与Action类之间的映射关系,它指示了Struts框架如何将请求路由到正确的Action。 4. **ActionForward**:ActionForward用来指定Action执行后页面的跳转方向,例如...
Struts的ActionServlet作为控制器,它接收HTTP请求,解析请求信息,并根据配置文件(struts-config.xml)将请求路由到相应的Action对象进行处理。 2. Struts主要组件 - ActionServlet:作为核心控制器,Action...