一个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.*;@WebListenerpublic class ContextListener implements ServletContextListener{public ContextListener() {}@Overridepublic void contextInitialized(ServletContextEvent sce) {/* This method is called when the servlet context is initialized(when the Web application is deployed). */System.out.println("在项目部署的时候做一些一次性的操作。");}@Overridepublic 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
�
