一文带你了解ServletContext

简介: ServletContext是一个全局的储存信息的空间,服务器开始就存在,服务器关闭才释放架构图示:我们可以把ServletContext当成一个公用的空间,可以被所有的客户访问,WEB容器在启动时,它会为每个Web应用程序都创建一个对应的ServletContext,它代表当前Web应用,并且它被所有客户端共享,公共聊天室就会用到它同时,多个Servlet也可以通过ServletContext来进行通信操作当web应用关闭、Tomcat关闭或者Web应用reload的时候,ServletContext对象会被销毁🙌


1.ServletContext是啥


ServletContext是一个全局的储存信息的空间,服务器开始就存在,服务器关闭才释放

架构图示:



我们可以把ServletContext当成一个公用的空间,可以被所有的客户访问,WEB容器在启动时,它会为每个Web应用程序都创建一个对应的ServletContext,它代表当前Web应用,并且它被所有客户端共享,公共聊天室就会用到它


同时,多个Servlet也可以通过ServletContext来进行通信操作


当web应用关闭、Tomcat关闭或者Web应用reload的时候,ServletContext对象会被销毁🙌


2.最简单的DEMO


首先我们编写一个Servlet用于向公共空间设置键值对信息:


import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
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用于读取公共空间中的信息:


import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
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通信了!


3.ServletContext 应用实例之获取初始化参数


假设我们的web.xml中存在下面的参数内容:


<context-param>
    <param-name>url</param-name>
    <param-value>jdbc:mysql://localhost:3306/mybatis</param-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);
}



目录
相关文章
|
Java 应用服务中间件 Maven
Servlet初识—编写hello world+使用smart Tomcat插件部署(二)
Servlet初识—编写hello world+使用smart Tomcat插件部署
Servlet初识—编写hello world+使用smart Tomcat插件部署(二)
|
前端开发 Java 数据库连接
基于Spring boot轻松实现一个多数据源框架
基于Spring boot轻松实现一个多数据源框架
497 0
Java 将Map的toString格式字符串转为 Map
Java 将Map的toString格式字符串转为 Map
1520 0
Java 将Map的toString格式字符串转为 Map
|
Java 测试技术 Android开发
Junit - 期望异常测试(Expected Test)
Junit - 期望异常测试(Expected Test)
1524 0
|
12月前
|
存储 运维 负载均衡
智能存储解决方案:探索 TDengine 的多级存储功能
在当今数据驱动的时代,如何高效地存储和管理海量数据已成为企业面临的一大挑战。为了应对这一需求,TDengine Enterprise 不仅支持使用对象存储(S3),还早已引入了独特的多级存储功能。这一功能不仅能够降低存储成本,还能显著提升数据写入性能,并简化系统维护流程。
187 2
|
Cloud Native 持续交付 Docker
云原生技术实践:Docker容器化部署教程
【9月更文挑战第4天】本文将引导你了解如何利用Docker这一云原生技术的核心工具,实现应用的容器化部署。文章不仅提供了详细的步骤和代码示例,还深入探讨了云原生技术背后的哲学,帮助你理解为何容器化在现代软件开发中变得如此重要,并指导你如何在实际操作中运用这些知识。
|
Java API 数据库
如何在Java中使用GraphQL
如何在Java中使用GraphQL
|
传感器
遥感物理基础(1) 电磁波谱与电磁辐射
本文内容较为枯燥,是遥感的物理原理,作者已经尽量去帮助读者理解了,无论是精细的阅读还是走马观花,长期下来都能提高读者对专业的了解;电磁辐射是遥感传感器与远距离目标联系的纽带。不同类型地物具有不同的电磁辐射,遥感技术正是利用地物的的不同辐射特征,转变成数据或影像,达到探测地面目标的目的。因此,要应用遥感技术,必须了解电磁辐射的基本性质及地物的波谱特征。​ 电磁波是遥感技术的重要物理理论基础。
1592 0
|
Kubernetes 网络协议 Cloud Native
Kubernetes网络问题排查分享两则(1)——calico特定场景下的网络性能问题
在对Kubernetes项目[kosmos](https://github.com/kosmos-io/kosmos)与Calico网络性能进行对比测试时,发现kosmos在跨集群容器网络的性能显著优于Calico的集群内网络(约6Gbit/s对比2.9Gbit/s)。物理机网络测试达到9.38Gbit/s,显示Calico有68%的性能损耗。问题定位到网卡的checksum/offload参数,尝试用`ethtool`调整后虽短暂提升,但随后恢复原状。转载自:https://mp.weixin.qq.com/s/XsQZCSqZAXJK46zqc7IpLw