拦截器在Struts2中的作用以及Struts2工作机制

来源:互联网 发布:登陆艇升级数据经验值 编辑:程序博客网 时间:2024/06/08 08:22

任何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中的配置找到相应的返回结果。


0 0
原创粉丝点击