1.ServletContext对象简介
每一个web应用都有且仅有一个ServletContext对象,又称Application对象,从名称中可知,该对象是与应用程序相关的。在WEB容器启动的时候,会为每一个WEB应用程序创建一个对应的ServletContext对象。
2.ServletContext的作用
该对象有两大作用:
1.作为域对象用来共享数据,此时数据在整个应用程序中共享。
2.该对象中保存了当前应用程序相关信息。例如可以通过getServerInfo()方法获取当前服务器信息,getRealPath(String path)获取资源的真实路径。
3.ServletContext对象
1.通过request对象获取
ServletContext servletContext1=request.getServletContext();
2.通过session对象获取
ServletContext servletContext2=request.getSession().getServletContext();
3.通过ServletConfig对象获取
ServletContext servletContext3=getServletConfig().getServletContext();
4.直接获取只能在Servlet中调用
ServletContext servletContext4=getServletContext();
4.ServletContext的常用方法
1.获取当前服务器的版本信息
String serviceInfo=request.getServletContext().getServerInfo();
System.out.println("服务器版本信息"+serviceInfo);
2.获取项目的真实路径
String realPath=request.getServletContext().getRealPath("/");
System.out.println("项目真实路径"+realPath);
package com.session.servlet;
import jakarta.servlet.ServletContext;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.WebServlet;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* 获取ServletContext对象,也叫Application对象
*/
@WebServlet("/sc01")
public class ServletContext01 extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//通过request对象获取
ServletContext servletContext1=request.getServletContext();
//通过session对象获取
ServletContext servletContext2=request.getSession().getServletContext();
//通过ServletConfig对象获取
ServletContext servletContext3=getServletConfig().getServletContext();
//直接获取只能在Servlet中调用
ServletContext servletContext4=getServletContext();
//常用方法
//1.获取当前服务器的版本信息
String serviceInfo=request.getServletContext().getServerInfo();
System.out.println("服务器版本信息"+serviceInfo);
//2.获取项目的真实路径
String realPath=request.getServletContext().getRealPath("/");
System.out.println("项目真实路径"+realPath);
}
}
5.ServletContext域对象
ServletContext也可以当做域对象来使用,通过向ServletContext中存取数据,可以使得整个应用程序共享某些数据,当然不建议存放过多的数据,因为Servletcontext中的数据一旦存储进去没有手动移除会一直保存。
ServletContext域对象不要随便使用,如果不删除会一直消耗内存。域范围越大所需的内存就越多。尽可能选择小的域对象。