Struts2 拦截器调用过程、ModelDrivenIntercepto拦截器和ParametersInterceptor拦截器简单介绍
来源:互联网 发布:软件instagram下载 编辑:程序博客网 时间:2024/06/06 19:32
一.总结
- 常用拦截器的执行步骤
- 登录中的拦截器执行过程
- 首先执行默认拦截器DefaultActionInvocation
- 首先执行其中的init方法
- 该方法创建Action,并将Action压入栈顶
- 首先执行其中的init方法
- 然后执行模型驱动拦截器ModelDrivenInterceptor
- 首先执行其中的intercept方法
- 该方法中获取模型驱动,并将模型压入栈顶
- 然后继续执行默认拦截器DefaultActionInvocation
- 执行该拦截器中的invoke方法
- 首先执行其中的intercept方法
- 然后执行赋值拦截器ParametersInterceptor
- 首先执行其中的doIntercept方法
- 该方法中获取request请求中的parameterMap中的请求数据。
- 然后调用setParameters(final Object action, ValueStack stack, final Map<String, Object> parameters)方法
- 在该方法中为Action中的属性赋值。
- 首先执行其中的doIntercept方法
- 首先执行默认拦截器DefaultActionInvocation
- 保存功能,拦截器的执行过程。
- 首先执行默认拦截器DefaultActionInvocation
- 执行其中的init方法,创建action并压入栈顶
- 然后执行ModelDrivenInterceptor
- 走了两次
- 一次是执行拦截器:actionMappingParams, Action映射赋值
- 一次是执行拦截器:Params,属性赋值
- 走了两次
- 执行ParametersInterceptor
- 此时parameters中无数据
- 再执行DefaultActionInvocation
- 再执行ParametersInterceptor
- 此时parameters中有页面传过来的数据
- 首先执行默认拦截器DefaultActionInvocation
- 总结:
- 实现模型驱动接口的Action,struts赋值执行流程
- 首先执行DefaultActionInvocation<com.opensymphony.xwork2.DefaultActionInvocation>判断要执行的拦截器,在该拦截器的init初始化方法中将请求的Action压入stack栈顶,然后执行invoke方法调用不同的拦截器
- 当DeafaultActionInvocation中invoke方法要执行modelDrive拦截器的时候,调用ModelDriven<com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor>拦截器。ModelDriven拦截器只负责将Model模型压入栈顶,也就是说此时action中的模型已经在栈中在ModelDriven压入的模型的下面。
- 当DeafaultActionInvocation中invoke方法要执行ActionMapping拦截器的时候,调用ParametersInterceptor<com.opensymphony.xwork2.interceptor.ParametersInterceptor>拦截器进行映射关系赋值。此时页面提交过来的parameters为空。
- 当DeafaultActionInvocation中invoke方法要执行params拦截器的时候,调用ParametersInterceptor拦截器进行Action属性赋值,此时页面提交过来的parameters有数据。
- 由于stack栈顶是ModelDriven拦截器压入的模型,所以赋值以该模型为先。就是说如果ModelDriven压入栈中的模型中如果存在与Action中属性名重名的属性,struts2的params拦截器会以ModelDriven压入栈的模型为先赋值、赋值结束后不会再对Action中同名属性进行赋值。如果ModelDriven压入栈的模型因为数据类型或者其他的原因赋值失败了,需要注意的是params拦截器也会终止为该属性继续赋值。
- Struts2拦截器赋值需要注意两点:
- 赋值时按照对象名称进行检索
- 赋值的时候对象在栈中的先后顺序决定了该对象是否会被赋值。
- 这个知识点是由于页面中的表单数据无法为目标Action中的属性赋值引起的?
- 原因就是因为模型驱动中提供了与Action中同名的属性。
- 实现模型驱动接口的Action,struts赋值执行流程
0 0
- Struts2 拦截器调用过程、ModelDrivenIntercepto拦截器和ParametersInterceptor拦截器简单介绍
- struts2 18拦截器详解(十五) --- ParametersInterceptor
- struts2拦截器简单介绍
- struts2 拦截器介绍
- STRUTS2拦截器介绍
- struts2拦截器介绍
- STRUTS2拦截器介绍
- Struts2拦截器介绍
- Struts2拦截器介绍
- struts2拦截器介绍
- Struts2拦截器介绍
- Struts2配置拦截器和拦截链
- Struts2配置拦截器和拦截链
- struts2中拦截器的全局拦截和自定义拦截
- struts2 拦截器的调用
- struts2 拦截器介绍二
- Struts2 介绍, 原理,拦截器
- Struts2拦截器简单示例
- 动态规划—求最长字符串子序列
- linux编程-文件操作(5)
- 勾股定理
- 【cocos2dx 小技巧】半透明屏蔽罩和弹出框的实现
- 将哈夫曼树转化成二叉树
- Struts2 拦截器调用过程、ModelDrivenIntercepto拦截器和ParametersInterceptor拦截器简单介绍
- Android复习
- 2014-12-18记录
- Qt Lighthouse学习(一)
- 九度 题目1045:百鸡问题
- 如何在ubuntu 系统上为 php 加上 redis 扩展
- tableView 分割线左边短15像素问题
- 恺撒密码
- 树莓派通过filezilla,samba与PC文件共享(转)