Struts2项目中,Tomcat在启动时,为struts2做了哪些初始化

时间:2022-06-27 08:30:58
struts2内部是基于filter的,小弟在研究struts2的运行机制,Tomcat启动时,为struts2完成了哪些初始化呢?

3 个解决方案

#1


你看tomcat
启动的时候
打印的日志里 会显示struts哪些类初始化了

#2


web.xml
struts.xml
这两个配置文件里你配置的内容都做了初始化。还有可能有其他配置文件也做了初始化。

#3


感谢上面两位道友的支持。  最近我对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里面,依次取出执行。

#1


你看tomcat
启动的时候
打印的日志里 会显示struts哪些类初始化了

#2


web.xml
struts.xml
这两个配置文件里你配置的内容都做了初始化。还有可能有其他配置文件也做了初始化。

#3


感谢上面两位道友的支持。  最近我对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里面,依次取出执行。