Struts2架构分析

Struts2主要是由拦截器来实现的

首先客户端通过HttpServletRequest来向servlet容器,也就是tomcat发送请求。
这个请求会经过一系列的过滤器,诸如ActionCtontextCleanUpdeng等等其他过滤器,
最终会被我们struts的核心过滤器FilterDispather过滤到,不过从struts2.3以后核心的控制器发生了变化,变成了StrutsPrepareAndExecuteFilter这个过滤器,也就是我们的核心控制器,核心控制器会访问ActionMapper来决定是否需要决定调用某一个action,如果用户请求的是jsp页面或者其他的web资源,只要不是action请求,那么他就不会去访问我们的action。
反之,如果我们的ActionMapping决定要调用我们的某一个Action,那么核心控制器会将我们的控制权临时委派给我们的ActionProxy,也就是我们的Action代理,这个时候我们的代理会通过 一个叫做ConfigurationManager的配置管理器来加载Struts的核心配置文件,struts.xml,通过前面的学习我们认知到struts的action都配置在strus.xml文件中,所以我们需要去加载这个文件,找到需要调用的action,
如果在struts.xml文件中我们找到了需要调用的action以后,我们的ActionProxy会创建一个叫做ActionInvocation的实例,在ActionInvacition里面他包括了创建的action的实例,同时它里面也包含了一些非常重要的东西,我们称之为拦截器---Interoptor,
在调用action之前以及调用action之后他还要调用非常多的拦截器,在调用action之前会依次调用所配置的拦截器,直到action之前的所有拦截器都调用完成后他会调用我们的action中的业务处理方法,进行相应的业务的处理。同时这个方法会返回一系列结果,------实际上会返回一系列字符串,然后我们根据这些字符串去调用相应的视图
资源-------jsp页面等。当返回视图以后,并没有立刻去响应用户,他还需要把之前执行过的拦截器再次反过来再执行一遍。(先前最后执行的这下最先执行),---故而又称之为拦截器栈。当这些拦截器都执行完以后,才会进行最终的请求的响应。通过HttpServletResponse去完成对客户端的响应。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 概述 什么是Struts2的框架Struts2是Struts1的下一代产品,是在 struts1和WebWork的...
    inke阅读 2,293评论 0 50
  • action中如何接受页面传过来的参数 第一种情况:(同名参数) 例如:通过页面要把id=1 name=tom a...
    清枫_小天阅读 3,035评论 1 22
  • spring mvc 工作机制(原理): DispatcherServlet主要用作职责调度工作,本身主要用于控制...
    java大湿兄阅读 1,929评论 5 24
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,269评论 19 139
  • 1、struts2工作流程 Struts 2框架本身大致可以分为3个部分: 核心控制器FilterDispatch...
    重山杨阅读 1,563评论 0 38