拦截器在Struts2中的作用以及Struts2工作机制
2016-03-27 18:47
591 查看
任何MVC框架都会完成一些通用的控制逻辑,如解析请求参数,类型转换,将请求参数封装成DTO,执行输入校验,解析文件上传表单中的文件域,防止表单的多次提交...早期的Struts1框架把这些动作都写死在系统的核心控制器中,但这样会导致灵活性和扩展性很差。Struts2改善了这两个缺点,它把核心控制器按功能分开定义,每个拦截器完成一个功能,这些拦截器可以自由组合甚至可以自定义拦截器,使用哪些就在struts.xml中配置即可,非常方便(可插拔式设计)。
使用Struts2框架时,用户请求会被StrutsPrepareAndExecuteFilter拦截,strutsPrepareAndExecuteFilter询问ActionMapper来决定这个请求是否需要调用某个Action,如果ActionMapper决定需要调用某个Action,StrutsPrepareAndExecuteFilter把请求的处理交给ActionProxy,ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类,ActionProxy创建一个ActionInvocation的实例,ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器的调用;一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到相应的返回结果。
使用Struts2框架时,用户请求会被StrutsPrepareAndExecuteFilter拦截,strutsPrepareAndExecuteFilter询问ActionMapper来决定这个请求是否需要调用某个Action,如果ActionMapper决定需要调用某个Action,StrutsPrepareAndExecuteFilter把请求的处理交给ActionProxy,ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类,ActionProxy创建一个ActionInvocation的实例,ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器的调用;一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到相应的返回结果。
相关文章推荐
- MyEclipse------文件字符输入,输出流读写信息
- java语言基础
- 20145320《Java程序设计》第4周学习总结
- Java-Scanner
- 今天踩了个大坑,springmvc的Circular view path
- jst获取不到springmvc中model数据
- java虚拟机参数设置 jvm参数设置
- java虚拟机参数设置 jvm参数设置
- jmeter java sampler测试java接口(一)javatest解读
- RxJava初级解析(一)
- Java NIO:浅析I/O模型
- [贪心算法]java解决背包问题
- java循环练习:用户输入一个10以内的数字,通过运算求出该数字的阶乘
- 希尔排序(Java语言描述)
- Java基础之Set
- Java并发:三种线程抽象以及线程执行
- ubuntu14.04安装jdk
- Java词频统计算法(使用单词树)
- JAVA第三周随笔
- Java socket中关闭IO流后,发生什么事?(以关闭输出流为例)