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基本运作流程 ActionMapping类 Action类 ActionForm类 ActionError与ActionMessage 协同开发 模块化程序 Struts异常处理 Struts国际化支持 PlugIn接口 等等
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,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
14.在Struts中使用数据服务 15.Artinus:全力以赴实际应用 16.回家:迁移到Struts 1.1 17.VElocity:JSP的替代选择 http://itlnk.cn网站整理 书名:Struts in Action[文字版][中文](电子书) 格式:PDF 本书的...
import org.apache.struts.action.ActionForm;import org.apache.struts.action.ActionForward;import org.apache.struts.action.ActionMapping;import org.apache.struts.actions.DispatchAction等缺少
struts1.x的例子,struts2.x可以参考自己修改 1.action的写法 import java.io.*; import java.sql.*; import java.util.ArrayList; import javax.servlet.http.HttpServletRequest; import javax.servlet....
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中, Controller主要是ActionServlet,但是对于业务逻辑的操作则主要由Action、ActionMapping、ActionForward这几个组件协调完成(也许这几个组件,应该划分到模型中的业务逻辑一块)。...
2. struts体系结构(模型-视窗-控制器)…………………………………………………3 3. struts框架的组件………………………………………………………………………4 3.1 struts配置文件…………………………………………...
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 ...
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的工作原理,如下图2所示: <br/> 控制:通过图2大家可以看到有一个XML文件Struts-config.xml,与之相关联的是Controller,在Struts中,承担MVC中Controller角色的是一个Servlet,叫ActionServlet...
ActionForward and ActionMapping
-(2)如果ActionForm实例不存在,就创建一个ActionForm对象,把客户提交的表单数据保存到ActionForm对象中; -(3)根据配置信息决定是否需要表单验证.如果需要验证,就调用ActionForm的validate()方法; -(4)如果...
Struts2 插件支持 URL 中的模式匹配以进行动作映射 Struts 2 的插件,允许开发人员控制 URL 如何映射到他们的操作: 使用正则表达式; 通过路径或命名空间将参数传递给动作; 控制允许的 HTTP 方法; 使用替代...
struts1的几个核心组件是值得我们注意的: 1 、ActionServlet(核心控制器)。 2、RequestProcessor类(处理异常的核心组件)。 3、ActionForm(接收页面中传过的数据)。 4、Action(是控制器,主要是从ActionForm中...
ActionMapping是ActionConfig的子类,实质上是对struts-config.xml的一个映射,从中可以取得所有的配置信息RequestProcessor根据提交过来的url,如*.do,从ActionMapping中得到相应的ActionForn和Action。...
parameter="" //指定Actgion的配置参数,在Action类的execute()方法中,可以调用ActionMapping对象的getParameter()方法来读取该配置参数。(相当于初始化赋值) >>> prefix=""// 指定填充当前 Action 关联 FormBean...
【项目实战案例】java校园订餐系统项目(web端) /* * Generated by MyEclipse Struts * Template path: templates/java/JavaClass.vtl ...import org.apache.struts.action.ActionMapping; import com.bean.HzpBean;
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...