Tomcat是如何加载Spring和SpringMVC及Servlet相关知识

大家是否清楚,Tomcat是如何加载Spring和SpringMVC,今天我们就弄清下这个过程(记录最关键的东西)

其中会涉及到大大小小的知识,包括加载时候的设计模式,Servlet知识等,看了你肯定有所收获~

Tomcat

tomcat是一种Java写的Web应用服务器,也被称为Web容器,专门运行Web程序

tomcat启动

tomcat启动了之后会在操作系统中生成一个Jvm(Java虚拟机)的进程,从配置监听端口(默认8080)监听发来的HTTP/1.1协议的消息

默认配置文件这样

Tomcat是如何加载Spring和SpringMVC及Servlet相关知识

当Tomcat启动完成后,它就会加载其安装目录下webapps里的项目(放war包会自动解压成项目)

小提问:webapps里多个项目,是运行在同一个JVM上吗

是运行在同一个JVM上的(Tomcat启动时创建的那个),多个项目就是多个线程,之所以项目间数据不共享,是因为类加载器不一样的缘故

加载Web程序(Spring+SpringMVC框架)

tomcat启动完毕后,最关键的是生成了ServletContext(Tomcat的上下文),然后会根据webapps项目里的web.xml进行加载项目

下面是一个SpringMVC+Spring项目的部分web.xml

1 <!--以下为加载Spring需要的配置--> 2 <!--Spring配置具体参数的地方--> 3 <context-param> 4 <param-name>contextConfigLocation</param-name> 5 <param-value> 6 classpath:applicationContext.xml 7 </param-value> 8 </context-param> 9 <!--Spring启动的类--> 10 <listener> 11 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 12 </listener> 13 14 <!--以下为加载SpringMVC需要的配置--> 15 <servlet> 16 <servlet-name>project</servlet-name> 17 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 18 <load-on-startup>1</load-on-startup> <!--servlet被加载的顺序,值越小优先级越高(正数)--> 19 20 <servlet-mapping> 21 <servlet-name>project</servlet-name> 22 <url-pattern>*.html</url-pattern> 23 </servlet-mapping> 24 </servlet>

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzdddx.html