先要参考srtuts的官方给出的图:
工作原理:
1.(ActionContextCleanUp
)首先客户端会发送一个请求,然后我们在web.xml配置中有一个strurts2的过滤器,在进入过滤器时,有这个ActionContextCleanUp filter进行处理,(因为struts2在开发中,容易引起众多类集合,而这些类集合并不能在使用完后全部消除,所以apache基金会为了让struts2在运行的过程中能够稳定,就特定的为所有ACTION进行监控,从而让struts2在第一时间知道被废弃的对象,从而使用ActioncontextCleanUp对象中进行销毁,但这里的销毁也是告诉JVM某个对象需要被销毁。)
2.(otherfilters)下面进入其他用户配置或者自定义的flter,执行过滤器链。
3.(flterDispather)核心filter(即flterDispather),它的作用是读取发送过来的请求与actionMapper中的action集合进行匹配是否有这个action,如果匹配到后就进入下一步,没有匹配到就执行失败。
4.(actionproxy)action代理类,在前面的核心控制器匹配到action后从配置读取器读取到的配置信息(是哪个类)生成指定的相应action类的实例。
5.代理类在ActionInvocation这个类中作为一个引用,然后在ActionInvocation这个类中有拦截器(拦截器有配置的)的集合,这个类中的invoke方法里去遍历拦截器,拦截器的intecept方法同时会传入一个ActionInvocation的自身的引用继续执行invoke方法继续执行拦截器。
6.执行完拦截器后就会执行action代理的excecute方法(如果配置了method就执行配置的方法),如果执行完这个后还有其他的拦截器则继续执行intecept后面的方法,再将响应回给客户端。
http://download.csdn.net/detail/u010214269/9009187
链接是自定义实现的struts.
版权声明:本文为博主原创文章,未经博主允许不得转载。