web.xml中加载顺序为:
Context-param > Listener > Filter > Servlet
下边为所做的测试
一:首先读取的肯定是配置的context-param参数,将其转换为键值,并交给ServletContext
如下配置,可以供spring 的Listener启动时使用
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationcontext-*.xml</param-value>
</context-param>
二:Servlet有load-on-startup配置
在servlet的配置当中,<load-on-startup>num</load-on-startup>的含义是:
标记容器是否在启动的时候就加载这个servlet。
Num>=0:表示容器在应用启动时就加载这个servlet; 正数的值越小,启动该servlet的优先级越高。
Num < 0:表示容器在该Servlet第一次被访问时才加载。
三:Listener 、Filter、Servlet启动顺序
Context-param > Listener > Filter > Servlet
代码测试如下(部分代码):
编写三个servlet
第一个Servlet : ServletTest1.java
public void init() throws ServletException {
System.out.println("servlet1 执行 init方法,load-on-startup设置为0");
}
第二个Servlet : ServletTest2.java
public void init() throws ServletException {
System.out.println("servlet2 执行 init方法,load-on-startup设置为5");
}
第一个Servlet : ServletTest3.java
public void init() throws ServletException {
System.out.println("servlet3 执行 init方法,load-on-startup设置为-1");
}
一个Listener
ListenerTest.java
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("Listener 执行其初始化contextInitialized方法");
}
一个Filter
FilterTest.java
public void init(FilterConfig arg0) throws ServletException {
System.out.println("Filter 执行init方法");
}
Web.xml文件中配置如下
<servlet>
<servlet-name>ServletTest1</servlet-name>
<servlet-class>com.hqb.test.ServletTest1</servlet-class>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ServletTest1</servlet-name>
<url-pattern>/servlet/ServletTest1</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>ServletTest2</servlet-name>
<servlet-class>com.hqb.test.ServletTest2</servlet-class>
<load-on-startup>5</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ServletTest2</servlet-name>
<url-pattern>/servlet/ServletTest2</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>ServletTest3</servlet-name>
<servlet-class>com.hqb.test.ServletTest3</servlet-class>
<load-on-startup>-1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>ServletTest3</servlet-name>
<url-pattern>/servlet/ServletTest3</url-pattern>
</servlet-mapping>
<filter>
<filter-name>filterTest</filter-name>
<filter-class>com.hqb.test.FilterTest</filter-class>
</filter>
<filter-mapping>
<filter-name>filterTest</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>com.hqb.test.ListenerTest</listener-class>
</listener>
启动项目查询运行结果如下:
Listener 执行其初始化contextInitialized方法
Filter 执行init方法
servlet1 执行 init方法,load-on-startup设置为0
servlet2 执行 init方法,load-on-startup设置为5
没有打印ServletTest2.java方法init()中的代码,因为其
<load-on-startup>-1</load-on-startup>
设置为-1,只会在第一次访问时才会加载
综上测试,得出我们上边写的加载顺序
Context-param > Listener > Filter > Servlet
相关推荐
4. `<load-on-startup>`:此标签用于指定Servlet在Web应用启动时加载的顺序。数值越小,Servlet越早被加载。如果省略或者值为负数,服务器会根据需要懒加载Servlet。 5. `<servlet-mapping>`:这个标签用于映射...
- **load-on-startup**:这是一个在Servlet配置(web.xml)中的元素,用于指定Servlet在服务器启动时是否预先加载。值为正整数时,Servlet会在服务器启动时按数值大小顺序创建。值为负或0则表示按需加载。 2. **...
总的来说,XML作为一种数据交换和存储的通用格式,广泛应用于Web服务、配置文件、数据传输等多个领域。理解XML的基础知识,以及如何在Java中解析和操作XML,对于IT从业者来说是非常重要的技能。
2. **作业(Job)**:管理转换和作业执行顺序的高级流程,可以控制数据处理的时间和条件。 **三、Kettle的使用流程** 1. **设计工作区**:在Spoon中创建新的转换或作业,通过拖拽操作构建数据流。 2. **数据源连接*...
10. **Servlet配置**:Servlet在`web.xml`中进行配置,包括Servlet的映射路径、加载顺序等。 11. **Action在MVC框架中的角色**:Action是MVC框架中的控制层,负责接收请求、调用业务逻辑和服务层,并返回响应。 12...
Servlet的解析通常基于Web应用配置文件(web.xml),其中定义了Servlet的映射路径和加载顺序。服务器根据这些配置决定何时以及如何加载Servlet。 4. Servlet映射技术: Servlet映射允许将特定的HTTP请求与Servlet...
Struts2框架按如下搜索顺序加载Struts2常量: * Struts-default.xml * Struts-plugin.xml * Struts.xml * Struts.properties * Web.xml 在struts.xml文件中定义常量(推荐在struts.xml文件中配置),例如:”...
4. 部署servlet:部署servlet需要在web.xml文件中配置servlet和servlet-mapping元素。 5. JSP的组成元素:JSP的组成元素有四类,分别是注释、指令元素、脚本元素和动作元素。 6. Hibernate框架中的SessionFactory...
7. **Filter的执行顺序**:在`web.xml`中,Filter的配置顺序决定了它们的执行顺序。如果多个Filter映射到同一个URL,那么在`<filter-mapping>`标签内的顺序决定了Filter的执行顺序,先声明的先执行。 通过以上知识...
2. 重复剪切粘贴:剪切pom.xml中的所有依赖,刷新,然后重新粘贴依赖,让IDEA重新加载它们。 3. 项目重新加载依赖:右键点击项目,选择"Maven" -> "Reimport",这会重新解析整个项目的依赖。 4. 删除并重新下载依赖...
在`web.xml`文件中定义Servlet,包括名称、类名、URL路径和加载顺序。 ```xml <servlet-name>myServlet <servlet-class>action.MyServlet <load-on-startup>1 <servlet-name>myServlet <url-pattern>/...
* 将 Axis2-1.4/Axis2-1.4.1 解压开来的目录下的 lib 目录里的所有 jar 导入你工程的WEB-INF/lib 目录下,并加载入工程的 classpath。 * 在工程和 src 平级处新建一个目录叫 external-lib,并将 tomcat 里的用于 jsp...
Spring Boot的配置加载顺序遵循以下规则: 1. application.properties 或 application.yml 文件,通常位于项目的resources目录下。 2. 系统环境变量。 3. 命令行参数。 YAML是一种流行的配置语言,相比传统的...
defer和async都是script标签的属性,用于控制JavaScript脚本的加载和执行顺序。defer使得脚本在文档解析完成后执行,而async使得脚本在加载完成后执行。 12. 有几种前端储存的方式? 前端储存的方式包括Cookie、...
SpringBoot 的配置加载顺序通常是: 1. properties 文件(包括 application.properties 和 profile-specific properties 文件,如 application-{profile}.properties) 2. YAML 文件(包括 application.yml 和 ...
10. **外部样式表**:在HTML文档中,外部样式表通常在`<head>`标签内通过`<link>`标签引入,且应放在文档开始处,以优化加载顺序。 11. **列表样式**:`list-style-type`属性可以去除列表的项目符号,选项C正确。 ...
2. 类别加载时期(类加载时增强) 3. 执行时期(运行时增强) 【@AspectJ的配置】 配置Spring支持@AspectJ注解,需要在XML配置中使用标签。proxy-target-class属性控制代理方式: - 默认值为false,表示使用JDK...