Strut2的运行流程和拦截器栈
来源:互联网 发布:ios数据安全 编辑:程序博客网 时间:2024/06/05 21:01
前边讲过了Struts2框架如何实现国际化的内容,就是通过配置国际化资源文件在src下而在Action中通过实现Textprovider接口的getText()方法来获取资源文件中key对应的value值而在JSP页面上通过Struts2标签的key属性(非simple主题)或者<s:text name=""/>(simple主题下)来获取资源文件中key对应的value值。下边我们来讲一讲面试Struts2中必考到也是对理解使用Struts2极其重要的一个知识点--即Struts2的运行流程。
运行流程简单来说我们将其描述成一个Action请求从发起到响应页面中Struts2框架做的事情。
1. Struts2的拦截器栈
①. 当我们发起一个Struts2的AXction请求时,Struts2框架会将这个请求交给在web.xml文件中配置的过滤器StrutsPrepareAndExecuteFilter,这个过滤器会询问相应的ActionMapping当前请求是不是在web.xml中配置的满足条件的Struts2的请求。
②. 若这个请求在经过ActionMapping判定之后就是Struts2的请求,那么StrutsPrepareAndExecuteFilter会将这个请求交给ActionProxy来处理。
③. StrutsActionProxy会根据ConfigurationManager询问框架的Struts.xml配置文件,找到这个请求对应的Action类和及action方法。
④. StutsActionProxy会创建一个DefaultActionInvokation对象,这个对象会调用在struts.xml文件中配置的指定的拦截器栈中的拦截器,并按照拦截器的顺序去调用。主要是在ActionInvocation的对象中遍历拦截器栈的拦截器,然后调用拦截器的interceptor()方法实现一系列的拦截器功能,在interceptor()方法的最后调用传入的DefaultActionInvokation对象的invoke方法返回到ActionInvocation对象。如此反复,将拦截器栈中配置的拦截器一步一步走完,从而实现一个个的功能。由此可以知道,Struts2框架时通过一系列的拦截器完成主要功能的。
⑤. 在调用完响应的拦截器之后,就会走到action请求对应的action方法中。
⑥. 方法执行完,我们会根据在struts.xml中配置的result节点找到相应的响应结果页面。
⑦. 最后再执行每个拦截器中invocation.invoke()之后的代码。
⑧. 将结果返回到客户端。
2. Struts2的拦截器栈
我们已知的拦截器栈主要有两个,一是defaultstack,另一个是paramsPrepareParamsStack拦截器栈。
① defaultstack
这个拦截器栈中,按照我们已知的拦截器,他们打大致执行顺序是:exception-i18n-modeldriven-params-debugging
② paramsPrepareParamsStack
针对于这个拦截器栈的名称我们可以清楚的看到使用了两次的params参数拦截器用于将请求参数赋值给值栈栈顶的对象。按照已知的拦截器他们在这个paramsPrepareParamsStack拦截器栈中的执行顺序是:exception-params-prepare-modeldriven-params-debugging
- Strut2的运行流程和拦截器栈
- 拦截器概述和Struts2的运行流程
- strut2.0 拦截器
- strut2拦截器详解
- strut2 拦截器 使用
- strut2拦截器
- 拦截器 Strut2
- Strut2的工作流程
- strut2.xml拦截器使用
- spring aop与strut2的拦截器冲突
- Strut2里拦截器不能加载的问题
- 东软学习,strut2初级学习的部分截图和笔记(四)-常量和部分拦截器
- Struts2的运行流程以及关键拦截器介绍
- strut2学习笔记6-拦截器
- struts2的请求流程,过滤器和拦截器区别
- struts2的执行原理(执行流程,过滤器和拦截器)
- Spring拦截器和异常处理的执行流程
- strut2-spring整合中,拦截器interceptor注入服务或dao的方法
- Filter
- Hadoop的block块深入分析
- char与wchar_t函数对照表
- Android 年月日时分秒时间选择器
- eclipse中文包下载及安装
- Strut2的运行流程和拦截器栈
- 在Delphi中编程实现中文输入的功能
- swift学习之--函数、构建函数、kvc构建函数
- _tcsnicmp&_wcsnicmp
- 简单易用的Qt日志模块
- codeforces Sagheer, the Hausmeister 812B
- 网页顶部加载进度条(真实加载进度)
- Android中的Space组件
- 初始MyBatis