`
小猪笨笨
  • 浏览: 7082 次
  • 性别: Icon_minigender_2
  • 来自: 上海
社区版块
存档分类
最新评论

Struts2中ActionMapping对象的构建过程

阅读更多

1. ActionMapping的处理过程

1.1. org.apache.struts2.dispatcher.mapper.DefaultActionMapper.getMapping()方法:

1.1.1. 创建新的ActionMapping对象

1.1.2. 获取uri(在处理ActionMapping之前, struts对request对象进行了一次封装, 那个时候已经对uri进行了处理)

1.1.3. 处理分号, 如果uri中有分号, 会将分号及其后面的部分过滤

1.1.4. 删除后缀: 这里删除的是配置的url规则中的后缀, 比如*.action

1.1.5. namespace和name处理: DefaultActionMapper.parseNameAndNamespace()方法:

1.1.5.1. 判断最后一个/的位置,

1.1.5.2. 处理namespace和name

1.1.5.2.1. 如果uri中没有/, 说明是访问根路径, 返回的namespace是””, action名字就是uri自身

1.1.5.2.2. 如果uri中只有一个/, 则namespace是”/”, action名字则会认为是uri的剩余部分

1.1.5.2.3. 如果配置了struts.mapper.alwaysSelectFullNamespace常量, 就始终认为最后一个/之前的部分是namespace, 剩下的部分是action名称

1.1.5.2.4. 如果不是上面的情况, 就会读取所有的package的namespace配置, 寻求与当前的uri匹配程度最大(相同的内容最长)的package, 并以其namespace作为当前的namespace, 剩余部分作为action的name

1.1.5.3. 如果配置了struts.enable.SlashesInActionNames常量, 在这里处理Action的name中的斜杠/

1.1.5.4. 为ActionMapping对象设置namespace和name属性

1.1.6. 处理特殊参数: DefaultActionMapper.handleSpecialParameters()方法:

1.1.6.1. 在struts中有4种特殊的参数前缀, 分别是: method:, action:, redirect:, redirect-action:. 每个前缀会对应一个在DefaultActionMapper.prefixTrie这个容器中的一个处理接口, 其中, 四种前缀的含义分别为:

1.1.6.1.1. method: 将调用同Action中的指定方法处理

1.1.6.1.2. action: 如果允许动态方法调用, 并且action:后面的内容中包含!, 那么会按照动态方法调用方式设置action和method, 否则, 直接将action:后面的内容设置为action

1.1.6.1.3. redirect: 直接跳转到指定的url

1.1.6.1.4. redirect-action: Action跳转

1.1.6.2. 创建一个空HashSet: uniqueParameters

1.1.6.3. 获取到原生的request对象的所有参数的Map: parameterMap

1.1.6.4. 迭代parameterMap, 在保证每个名字的参数只处理一次的前提下, 将所有需要特殊处理的参数进行处理, 并添加到uniqueParameters这个HashSet中

1.1.7. 处理Action的名字: 这里主要是处理动态方法调用的情况

 

分享到:
评论

相关推荐

    Struts简介 什么是Struts Struts基本运作流程

    Struts简介 什么是Struts Struts基本运作流程 ActionMapping类 Action类 ActionForm类 ActionError与ActionMessage 协同开发 模块化程序 Struts异常处理 Struts国际化支持 PlugIn接口 等等

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

    1.3. Struts 框架中的组件.3 1.3.1. Struts配置文件.3 1.4. ActionServlet类6 1.4.1. ActionServlet配置6 1.4.2. ActionServlet方法7 1.5. ActionMapping 类8 1.6. Action 类.8 1.6.1. Action 类的方法.9 1.7. ...

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

    主要介绍了Struts1教程之ActionMapping,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Struts in Action[文字版][中文]

    14.在Struts中使用数据服务 15.Artinus:全力以赴实际应用 16.回家:迁移到Struts 1.1 17.VElocity:JSP的替代选择 http://itlnk.cn网站整理 书名:Struts in Action[文字版][中文](电子书) 格式:PDF 本书的...

    org.apache.struts缺少所需包

    import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction等缺少

    POI导入导出EXCEL文件.(struts 1.x and struts2.x).doc

    struts1.x的例子,struts2.x可以参考自己修改 1.action的写法 import java.io.*; import java.sql.*; import java.util.ArrayList; import javax.servlet.http.HttpServletRequest; import javax.servlet....

    Struts框架及标记库

    1.3 Struts框架中的组件 5 1.3.1 Struts配置文件 5 1.3.2 ActionServlet类 8 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 ...

    Struts framework

    在Struts framework中, Controller主要是ActionServlet,但是对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成(也许这几个组件,应该划分到模型中的业务逻辑一块)。...

    struts中文学习资料.doc

    2. struts体系结构(模型-视窗-控制器)…………………………………………………3 3. struts框架的组件………………………………………………………………………4 3.1 struts配置文件…………………………………………...

    Myeclipse开发struts+hibernate+spring新手入门--环境配置---项目开发示例

    4 import org.apache.struts.action.ActionMapping; 5 6 /** 7 * MyEclipse Struts 8 * Creation date: 11-10-2005 9 * 10 * XDoclet definition: 11 * @struts.form name="LoginForm" 12 */ 13 public ...

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

    8.5 Struts中不同的Action和ActionForm组合 13 第9章Struts内置机制 13 9.1 Struts内置类DispatchAction 13 9.2 Struts内置类ForwardAction 13 9.3 Struts令牌机制,防止重复提交 13 9.4 StrutsAction单态陷阱,请...

    Struts原理、开发及项目实施

    Struts的工作原理,如下图2所示: <br/> 控制:通过图2大家可以看到有一个XML文件Struts-config.xml,与之相关联的是Controller,在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet...

    ActionForward and ActionMapping

    ActionForward and ActionMapping

    Spring面试题

    -(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中; -(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法; -(4)如果...

    struts2urlplugin:Struts2 插件支持 URL 中的模式匹配,用于动作映射器

    Struts2 插件支持 URL 中的模式匹配以进行动作映射 Struts 2 的插件,允许开发人员控制 URL 如何映射到他们的操作: 使用正则表达式; 通过路径或命名空间将参数传递给动作; 控制允许的 HTTP 方法; 使用替代...

    struts1流程和原理

    struts1的几个核心组件是值得我们注意的: 1 、ActionServlet(核心控制器)。 2、RequestProcessor类(处理异常的核心组件)。 3、ActionForm(接收页面中传过的数据)。 4、Action(是控制器,主要是从ActionForm中...

    Struts开发指南之工作流程

     ActionMapping是ActionConfig的子类,实质上是对struts-config.xml的一个映射,从中可以取得所有的配置信息RequestProcessor根据提交过来的url,如*.do,从ActionMapping中得到相应的ActionForn和Action。...

    Struts_config.xml详解

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

    【项目实战案例】java校园订餐系统项目(web端)

    【项目实战案例】java校园订餐系统项目(web端) /* * Generated by MyEclipse Struts * Template path: templates/java/JavaClass.vtl ...import org.apache.struts.action.ActionMapping; import com.bean.HzpBean;

    外文翻译 stus MVC

    Struts is a set of cooperating classes, servlets, and JSP tags that make up a reusable MVC 2 design. This definition implies that Struts is a framework, rather than a library, but Struts also contains...

Global site tag (gtag.js) - Google Analytics