ServletContext是一个全局的储存信息的空间,服务器开始就存在,服务器关闭才释放
架构图示:
我们可以把ServletContext当成一个公用的空间,可以被所有的客户访问,WEB容器在启动时,它会为每个Web应用程序都创建一个对应的ServletContext,它代表当前Web应用,并且它被所有客户端共享,公共聊天室就会用到它
同时,多个Servlet也可以通过ServletContext来进行通信操作
当web应用关闭、Tomcat关闭或者Web应用reload的时候,ServletContext对象会被销毁🐢
首先我们编写一个Servlet用于向公共空间设置键值对信息:
public class HelloServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext servletContext = this.getServletContext();
String say = "Hello!";
servletContext.setAttribute("say", say);
}
}
再编写一个Servlet用于读取公共空间中的信息:
public class GetSomething extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext servletContext = this.getServletContext();
String say = (String) servletContext.getAttribute("say");
response.getWriter().println(say);
}
}
这样就通过ServletContext实现了一个最基本的Servlet通信了!
假设我们的web.xml中存在下面的参数内容:
<context-param>
<param-name>urlparam-name>
<param-value>jdbc:mysql://localhost:3306/mybatisparam-value>
context-param>
可以通过Servlet - getInitParameter
获取初始化配置信息:
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext servletContext = this.getServletContext();
String url = servletContext.getInitParameter("url");
response.getWriter().println(url);
}