web.xml的启动顺序,以及context-param,listener的用法

web容器加载web项目的时候,首先读取web.xml中的内容;那么读取web.xml的顺序是什么呢(web.xml的启动顺序)?

1:读取 context-param,listener节点的内容

2:由web容器创建一个servletContext对象,这个对象是整个项目共享的.

3:解析context-param中的数据----把数据封装成为map形式,并放到servletontext中.

4.加载listener中的类,创建监听器.

5.启动servlet.

servlet既然有多个,那么它们的启动也是有顺序的.这是由load-on-startup标签来决定的.

(1)当load-on-startup>0||=0,在启动容器的时候加载.

并且,是按照从小到大的顺序进行加载.

(1)当load-on-startup<0||默认,在使用时候加载.

6.启动fiter.它的启动方式同servlet相同,不在说明.


web.xml中的context-param标签的作用:

容器启动的时候,context-param标签中内容会被封装到servletContext中.可以通过servletContext.getInitParam(key)来获得参数.

举列:在容器启动之前,连接mysql数据库

1:web.xml内容 


		driverclass
		com.mysql.jdbc.Driver
	
	
	
		url
		jdbc:mysql://localhost:3306/test
	
	
	
		username
		root
	
	
	
		password
		123456
	
2:listener内容

public void contextInitialized(ServletContextEvent sce) {
		this.servletContext=sce.getServletContext();
		String  driverclass=servletContext.getInitParameter("driverclass");
		String  url=servletContext.getInitParameter("url");
		String  username=servletContext.getInitParameter("username");
		String  password=servletContext.getInitParameter("password");
		Connection conn=null;
		try {
			Class.forName(driverclass);
			conn=DriverManager.getConnection(url,username,password);
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		servletContext.setAttribute("conn",conn);
		
	}

你可能感兴趣的:(servlet)