一.load-on-startup标签的作用:
1.设置servlet的加载优先级别
2.在启动容器时是否加载该servlet
<load-on-startup>1</load-on-startup>
当值为0或大于0时,表示web项目一发布就加载该Servlet并执行inti方法
当是一个负数或者没有指定时,则指示容器在该Servlet被选择时才加载创建DispatcherServlet对象执行init方法
正数的值越小,启动该servlet的优先级越高
二.有该标签时DispatcherServlet执行过程
web.xml中的配置:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id="WebApp_ID" version="2.5">
<display-name>cassini</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:application.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/</url-pattern>
</filter-mapping>
</web-app>
load-on-startup标签的作用:
1.Tomcat发布Web项目,由于web.xml文件配置org.springframework.web.servlet.DispatcherServlet时添加了<load-on-startup>1</load-on-startup>,所以依次执行DispatcherServlet类静态代码块、构造方法和init方法,如下代码:
静态代码块:
构造方法:
init方法:该方法继承自HttpServletBean抽象类:
2.执行DispatcherServlet类initServletBean()方法,该方法继承自FrameworkServlet抽象类;
3.执行DispatcherServlet类initWebApplicationContext()方法,该方法继承自FrameworkServlet抽象类;
4、执行DispatcherServlet类onRefresh(ApplicationContext context)方法;
5、执行DispatcherServlet类initStrategies(ApplicationContext context)方法;