一个ServletContext就代表一个Web应用,可以用于与Web容器(Tomcat)通信
比如在Tomcat部署3个项目aaa、bbb、ccc。就有3个不同的ServletContext。
在一个项目里面的任何地方拿到的ServletContext都是同一个,想在项目里面获取到web容器(如Tomcat)里面的东西,就可以使用ServletContext。
获取方式
request.getServletContext();
getServletContext(); //在servlet内调用此方法
同一个项目,任何地方拿到的都是同一个。
ServletContext创建和销毁时机
当一个项目部署到web容器时,就会创建一个唯一的ServletContext。
类似于点击上面的按钮就会创建一个ServletContext。
当一个项目从web容器中移除时就会销毁这个唯一的一个ServletContext。
类似点击上面的按钮就会销毁这个ServletContext。
监听项目的部署和取消部署
如果想监听项目的部署和取消部署可以使用监听器。
最常用的就是ServletContextListener。创建一个类,实现ServletContextListener接口就可以了
package com.lff;
import javax.servlet.*;
import javax.servlet.annotation.*;
@WebListener
public class ContextListener implements ServletContextListener{
public ContextListener() {
}
@Override
public void contextInitialized(ServletContextEvent sce) {
/* This method is called when the servlet context is initialized(when the Web application is deployed). */
System.out.println("在项目部署的时候做一些一次性的操作。");
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
/* This method is called when the servlet Context is undeployed or Application Server shuts down. */
System.out.println("在项目取消部署的时候,销毁资源");
}
}
也可以使用XML的方式配置ServletContextListener。在web.xml中配置如下信息,并且把上面的类@WebListener注解去掉即可
<listener>
<listener-class>com.lff.ContextListener</listener-class>
</listener>
ServletContext常用方法
getServletContext().setAttribute("name","lff");
getServletContext().getAttribute("name");
getServletContext().removeAttribute("name");
�request、session也有上面的方法,用于保存数据。
保存范围 request < session < ServletContext
�