ServletContextListener的作用


  ServletContextListener是對ServeltContext的一個監聽.servelt容器啟動,serveltContextListener就會調用contextInitialized方法.在方法里面調用event.getServletContext()可以獲取ServletContext,ServeltContext是一個上下文對象,他的數據供所有的應用程序共享,進行一些業務的初始化servelt容器關閉,serveltContextListener就會調用contextDestroyed.

  實際上ServeltContextListener是生成ServeltContext對象之后調用的.生成ServeltContext對象之后,這些代碼在我們業務實現之前就寫好,它怎么知道我們生成類的名字.實際上它並不需要知道我們的類名,類里面有是方法.他們提供一個規范,就一個接口,ServeltContextListner,只要繼承這個接口就必須實現這個方法.然后這個類在web.xml中Listener節點配置好.Servelt容器先解析web.xml,獲取Listener的值.通過反射生成對象放進緩存.然后創建ServeltContext對象和ServletContextEvent對象.然后在調用ServletContextListener的contextInitialized方法,然后方法可以把用戶的業務需求寫進去.struts和spring框架就是類似這樣的實現,我們以后寫一些框架也可以在用.

java代碼

package com.chen;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class MyServletContextListener implements ServletContextListener{

	@Override
	public void contextDestroyed(ServletContextEvent arg0) {
		System.out.println("destroyed");
	}

	@Override
	public void contextInitialized(ServletContextEvent event) {
		System.out.println("initialized");
		event.getServletContext().setAttribute("user", "admin");
		
	}

}

  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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>oa</display-name>

  <listener>
  	<listener-class>com.chen.MyServletContextListener</listener-class>
  </listener>

  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
</web-app>

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM