感谢上面两位道友的支持。 最近我对SSH进行了总结,希望对大家有帮助:
1、
Spring的加载方式Listener
org.springframework.web.context.ContextLoaderListener
2、
SpringMVC的启动方式是Servlet
org.springframework.web.servlet.DispatcherServlet
3、
Struts2的初始方式是Filter
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
Listener >> Filter >> Servlet
Listener
Listener是监听,Spring使用Listener,是使用它监听web项目的部署。一旦有项目部署,那么Listener首先起作用。他会根据Spring的配置文件ApplicationContext.xml,创建Spring的各种Bean,以及依赖关系;
Spring也是一个容器,Tomcat容器内部的容器。
Filter
然后启动Filter,Filter也是在项目部署前创建好的,因为一个请求过来如果Filter还没有创建好,那么Filter就没有办法拦截了。如Struts2的Filter,项目启动的时候,加载完Spring的配置文件,就开始创建Filter。加载Struts2的配置。
Servlet
Servlet不一样,Servlet是在项目运行中,有请求过来的时候再创建。只不过在SpringMVC中,我们都会通过设置load-on-startup 为较小值,让它尽快启动。
拦截器
拦截器的创建,其实拦截器是由Spring管理的,所以拦截器是在Listener启动的时候创建的,即在Filter创建之前创建。
拦截器的内部实现,其实是把每个拦截器都放在一个list里面,依次取出执行。