一、框架的本质
在说Struts2,Spring和Hibernate核心原理之前,我觉得应该先搞明白以下三个问题,简短概括如下:
1、什么框架?
框架并不是什么神圣的东西,它只是一组jar包而已,其本质是对jdk功能的扩展,包含了一系列最佳实践,作用是解决某个领域的问题。
从广义上说,jdk也可以看做一个复合框架,它提供的api同样是为了解决各个领域的问题,例如java io解决文件操作的问题,java socket解决网络通讯的问题等等。
2、框架从何而来?
从框架的本质看,框架的产生就是为了解决一个又一个在开发中所遇到的问题。不同的框架是为了解决不同领域的问题。
3、为什么要使用框架?
框架是因解决问题而来,而且它带来了解决某一领域问题的最佳实践,实际是无数程序员在经过了无数次尝试后,总结出来处理特定问题的特定方法,如果我们把每个程序员的自由发挥看做是一条通往成功的路径,最佳实践就是其中的最短路径,它能够极大地解放生产力。
二、框架的适用范围
Web开发模式中最普遍的一种是“分层开发模式”,分层开发模式是指,在开发J2ee程序时,将整个程序根据功能职责进行纵向划分,比较常见的划分方法是:表示层,业务层,持久层。
我们最为熟悉得Struts,Spring,Hibernate正是为了应对各个层次的编程问题的最佳实践。即Struts对应表示层,Hibernate对应持久层,而Spring比较特殊,我们暂时简单地认为它对应业务层,后面我们再详细讨论。
三、Struts2
说了这么多,终于进入文章的重心了。
从宏观看,Struts2是一个运行于Web容器的表示层框架,其核心作用是帮助我们处理http请求。
Struts2遵循Servlet标准,通过实现标准的Filter接口进行Http请求的处理,通过在web.xml指定这个实现类StrutsPrepareAndExecuteFilter,就可以将Struts2引入到应用中来。
而Filter的生命周期也成为我们对整个Struts2进行逻辑主线划分的主要依据。
主线1:Struts2初始化-----Filter的init方法驱动执行。
主线2:Struts2处理Http请求------Filter的doFilter方法驱动
示意图:
参考网址:https://www.cnblogs.com/pengziqiang/p/5856663.html