一、strust 2
1、运行原理
1.客户端初始化发出一个执行Service容器(如Tomcat)的Http请求(HTTPServletRequest)
2.经过一系列过滤器Other Filters(其中ActionContextCleanUp可以帮助Struts 2和其他框架更好的继承,比如SiteMesh,
ActionContextCleanUp延长了Action的生命周期,通过它对属性进行清除,不让Action自行清除,帮助SiteMesh完成静态页面与动态页面的分离工作)
3.到达核心过滤器StrutsPrepareAndExecuteFilter(它是DispatcherFilter的替代版,解决了不能再Action的过滤器之前使用拦截器的问题,通过它我们可以将自定义过滤器放在StrutsPrepareFilter和StrutsExecuteFilter之间),核心过滤器询问ActionMapper该请求是否需要Struts2进行处理
4.ActionMapper判定该请求是否需要调用Action,如果需要告知核心过滤器,核心过滤器将该请求的处理交给ActionProxy(如不需要执行步骤9)
5.ActionProxy询问Configuration Manager,通过查询ActionMapping里Struts.xml的配置找到请求的Action告知ActionProxy
6.ActionProxy创建ActionInvocation实例
7.ActionInvocation通过default.properties的配置使用命名模式调用Action,调用Action的前后需要经过一系列拦截器Interceptor
8.进入Action完成逻辑处理后,根据ActionMapping中struts.xml里result的配置找到对应的返回结果
9.该请求处理再反向经过刚才的一系列拦截器返回出HttpServletResponse
10.经由HttpServletResponse响应到页面
思考:Other Filters里都有什么过滤器?
2.运行过程
参考文章: 参考文章1.客户端发出Http请求2.根据web.xml的配置,将该请求的处理交给StrutsPrepareAndExcuteFilter3.根据struts,xml的配置,找到该请求对应的Action,前台页面的值通过IOC(反向控制)将值注入到Action4.Action处理业务逻辑5.根据Struts.xml配置的Result找到要返回的页面6.返回Http响应到客户端