Java Web容器的启动过程

Java web容器的启动与处理请求的过程

1.启动一个web项目的时候,web容器回去读取它的配置文件web.xml,读取<Context-param>结点。

2.容器创建一个servletContext(Servlet上下文),这个web项目的所有部分都将共享这个上下文。

3.容器将<context-param>转换为键值对,并交个ServletContext。因为listener,filter等组件在初始化时会用到这些上下文的信息,所以要先加载。

4.容器创建<listener>的类实例,创建监听器。

5.加载filter和servlet

load-on-startup元素在-web应用启动的时候指定了servlet被加载的顺序,它的值必须是一个整数。如果它的值是一个负整数或者这个元素不存在,那么容器会在该servlet被调用的时候加载这个servlet。如果值是正整数或0,容器在配置的时候就加载并初始化这个servlet。容器必须保证值小的先被加载,如果值相等,容器可以自动选择加载谁。

web.xml的加载顺序是:Context--param--listener--filter--servlet

容器处理请求的过程

当web容器接收到来自客户端的请求信息后,会根据url中的web元件地址信息到servlet队列中查找对应的servlet对象,如果找到则直接使用,如果没有找到则加载对应的类,并创建对象。也就是说,servlet对象是在第一次被使用的时候才创建的,并且一旦创建就会被反复使用,不再创建新的对象。所有创建的servlet对象会在web服务器停止运行的时候,统一进行垃圾回收。

时间: 2024-10-11 06:42:08

Java Web容器的启动过程的相关文章

SpringBoot:Spring容器的启动过程

一.简述 Spring的启动过程就是IoC容器的启动过程,本质上就是创建和初始化Bean的工厂(BeanFactory),BeanFactory是整个SpringIoC的核心,Spring使用BeanFactory来实例化.配置和管理Bean. 二.SpringBoot的启动过程 在SpringBoot中,SpringApplication封装了一套Spring应用的启动流程,对用户完全是透明的,这个类原本在Spring中是没有的. 一般来说,默认的SpringApplication执行流程可以

apacheFtpServer集成spring由web容器控制启动和关闭

ApacheFtpServer是一个100%纯Java实现的FTP服务器,基于网络框架apache MINA实现,可支撑多并发用户.FtpServer可以独立运行作为一个Windows服务或Unix/Linux守护进程,或嵌入到Java应用程序,提供对内部集成spring应用程序支持.下面介绍apacheFtpServer与spring集成,交由spring控制ApacheFtpServer的启动与关闭. 1.      初始化创建MyFtpServer: import java.io.File

spring源码研究之IoC容器在web容器中初始化过程

前段时间在公司做了一个项目,项目用了spring框架实现,WEB容器是Tomct 5,虽然说把项目做完了,但是一直对spring的IoC容器在web容器如何启动和起作用的并不清楚.所以就抽时间看一下spring的源代码,借此了解它的原理. 我们知道,对于使用Spring的web应用,无须手动创建Spring容器,而是通过配置文件,声明式的创建Spring容器.因此在Web应用中创建Spring容器有如下两种方式: 1. 直接在web.xml文件中配置创建Spring容器. 2. 利用第三方MVC

常用java web容器http长连接超时设置

1.http长连接相关知识 http长连接对我们来说并不陌生,但长连接并不是永远不会关闭.对于HTTP长连接需要注意下面几点: keepalive_timeout指的是web服务器发送完最后一个响应报文后,开始计时,如果在keepalive_timeout指定的时间内还没有收到该连接上的下次请求,则关闭该连接. http长连接的keepalive_time和tcp连接的keepalive_timeout不同. http keep-alive与tcp keep-alive,意图不一样.http k

spring容器的启动过程(1)

容器启动过程总体流程 public void refresh() throws BeansException, IllegalStateException { //容器在启动之前要获得对象锁,保证容器只有一个启动synchronized (this.startupShutdownMonitor) { // Prepare this context for refreshing. prepareRefresh(); // Tell the subclass to refresh the inter

IoC容器的启动过程

 <context-param>   <param-name>contextConfigLocation</param-name>   <param-value>applicationContext.xml</param-value>  </context-param>    <listener>   <listener-class>org.springframework.web.context.Context

[Java Web学习]Tomcat启动时报war exploded: Error during artifact deployment

报错:Artifact FirstWeb:war exploded: Error during artifact deployment. See server log for details. SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListenerorg.springframewor

java的异常和java web容器的异常

一.java的异常,只要catch住异常了,程序就不会挂,依然会执行catch之后的语句 Java程序发生异常就挂了吗? 为了验证程序不会挂,我写了个例子给大家看看. 测试代码: import java.io.File; import java.io.IOException; /** * Java程序发生异常就挂了吗? * */ publicclass TestException {         publicstaticvoid main(String[] args) {          

java web项目初始化启动一个java方法

项目中需要一些初始化数据,或者加载中断的任务. 首先在web.xml中配置信息,配置在<web-app>中: <servlet> <servlet-name>Init</servlet-name> <servlet-class>monitor.util.InitSystemServlet</servlet-class> <load-on-startup>4</load-on-startup> </serv