web框架——struts2概述

struts2

学习了几天struts2框架总结一下所学的知识,感谢各位大神在博客的分享以及对各种问题的回答,其中发现一篇对struts2的内核分析文章分享给大家 https://developer.ibm.com/cn_answers/bluemix/

struts的流程图

官网的流程图

在此讲解一些表面的一些流程,内核就不分析了。因为是为了就业所以并没有花太多时间在内核上,希望以后有时间能好好学习。
httpServletRequest这个大家都知道就是浏览器的请求
ActionContextCleanUp这个是过滤器用于系统整合技术,如 SiteMesh 插件
Other filters这个是其他过滤器可以是美化界面的过滤器也可以是其他的。可以是用值栈,但是在使用值栈之前要通知FilterDispatcher 过滤器不要清除值栈,自己会清除。
FilterDispatcher 这个是核心过滤器通过该过滤器以确定请求是否是某个Action请求或者是直接访问静态资源或者是转向某个网页界面。如果请求是Action则会转向ActionProxy。
ActionProxy是一个动态代理。它会读取struts.xml的配置信息并找到Action请求对应的行为类以及拦截器如果没有则报错。找到则加载拦截器和行动类实例方法的引用。拦截器以及行动类的实例都是由dispatcher 加载的由核心过滤器FilterDispatcher 完成。
拿到动态代理实例ActionInvocation,它里面有拦截器的引用和行为类实例方法的引用。学过动态代理都知道在动态代理中实行实际类的方法前都会做一些增强的行动,而拦截器就是这样的作用通过反复加载invoke()方法从一个拦截器跳到另一个拦截器最终到达行为类Action的方法并执行。最后再反向拦截。
不能看出整个过程的核心就在拦截器上面,通过值栈的数据对request和response进行准备和包装以达到简化操作增强性能的作用。
最后再转向输出的页面完成整个一次请求响应

struts2理解的关键就在与理解动态代理的思想,整个框架的核心原理是由反射形成的动态代理。

猜你喜欢

转载自blog.csdn.net/u011456867/article/details/52155942
今日推荐