先了解ServletContext对象:
每一个web应用都有且仅有一个ServletContext对象,又称Application对象,从名称中可知,该对象是与应用程序相关的。在WEB容器启动的时候,会为每一个WEB应用程序创建一个对应的ServletContext对象。
该对象有两大作用,第一、作为域对象用来共享数据,此时数据在整个应用程序中共享;第二、该对象中保存了当前应用程序相关信息。例如可以通过getServerInfo()方法获取当前服务器信息,getRealPath(Stringpath)获取资源的真实路径等。
获取ServletContext对象的方式以及常用方法:
下面咱们看代码
package com;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 获取ServletContext对象
* 1.通过request对象获取
* 2.通过session对象获取
* 3.通过ServletConfig对象获取
* 4.直接获取
*
* 常用方法
* 1.获取当前服务器的版本信息
* request.getServletContext().getServerInfo();
* 2.获取项目的真实路径
* request.getServletContext().getRealPath("/");
*/
@WebServlet("/s01")
public class Servlet01 extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.通过request对象获取
ServletContext servletContext1 = request.getServletContext();
//2.通过session对象获取
ServletContext servletContext2 = request.getSession().getServletContext();
//3.通过ServletConfig对象获取
ServletContext servletContext3 = getServletConfig().getServletContext();
//4.直接获取
ServletContext servletContext4 = getServletContext();
//常用方法
//1.获取当前服务器的版本信息
String serverInfo = request.getServletContext().getServerInfo();
System.out.println("获取当前服务器的版本信息:"+serverInfo);
//2.获取项目的真实路径
String realPath = request.getServletContext().getRealPath("/");
System.out.println("获取项目的真实路径:"+realPath);
}
}
运行结果:可以知道当前服务器版本信息以及项目的真实路径
ServletContext域对象:
ServletContext也可当做域对象来使用,通过向ServletContext 中存取数据,可以使得整个应用程序共享某些数据。当然不建议存放过多数据,因为ServletContext 中的数据一旦存储进去没有手动移除将会一直保存。
//获取servletcontext对象
Servletcontext servletContext = request.getservletContext();
//设置域对象
Servletcontext.setAttribute( "name" , "zhangsan");
//获取域对象
String name = (String) servletcontext.getAttribute("name");
//移除域对象
Servletcontext.removeAttribute("name") ;
Servlet的三大域对象
1.request域对象
在一次请求中有效。请求转发有效,重定向失效。
2.session域对象
在一次会话中有效。请求转发和重定向都有效,session销毁后失效。
3.servletContext域对象
在整个应用程序中有效。服务器关闭后失效。