ServletContext对象
(一)每一个web应用都有且仅有一个ServletContext对象,又称Application对象,从名称中可知,该对象是与应用程序相关的。在WEB容器启动的时候,会为每一个WEB应用程序创建一个对应的ServletContext对象。
(二)该对象有两大作用,第一、作为域对象用来共享数据,此时数据在整个应用程序中共享;第二、该对象中保存了当前应用程序相关信息。例如可以通过getServerlnfo()方法获取当前服务器信息,getRealPath(Stringpath)获取资源的真实路径等。
ServletContext对象的获取
四种获取方式
ServletContext context=request.getServletContext();//常用第一种
ServletContext context1=getServletContext();//第二种
ServletContext context2=request.getSession().getServletContext();//没有request 可以用 Session方式
ServletConfig config=getServletConfig();//第四种
ServletContext context3=config.getServletContext();
常用方法(获取和设置)
context.setAttribute("name","张三");//设置
context.getAttribute("name");//获取
context.removeAttribute("name");//移除
Servlet 中的三大域对象(数据共享,数据保存)
request域对象 | Session域对象 | ServletContext域对象 |
---|---|---|
一次请求中有效。请求转发有效,重定向无效 | 一次会话中有效。请求转发,重定向都有效 ,Session销毁后失效 | 在整个应用程序中有效,服务器关闭后失效 |
总结
可以通过ServletContext来存取数据,可以使某个数据在整个应用程序中共享,但不建议存放过多的数据,因为ServletContext中的数据一旦储存进去就没办法进行手动移除,会一直保存。