专栏首页咖啡的代码人生java web Servlet 使用 Application/ServletContext

java web Servlet 使用 Application/ServletContext

本文介绍 怎么在Servlet Web应用 中 初始化 全局变量(ServletContext)

ServletContext 也就是 java Servlet Web应用 里面的全局变量,当我们有时要做一些初始化配置是通常也是存在ServletContext里面

怎么初始化呢?有2个办法,一是监听器(listener)来初始化,二是通过设置servlet的load-on-startup=1,让servlert在web应用在启动时就加载这servlert来实现

我们这里主要讲第一个,也就是通过监听器(listener)来实现

首先我们要准备一个实现了ServletContextListener监听器接口的类

public class ContextLoaderListener implements ServletContextListener{

    //实现全局上下文初始化方法
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        //获得全局变量
        ServletContext servletContext = servletContextEvent.getServletContext();
        //设置全局变量属性
        servletContext.setAttribute("test","test1");
    }

    //实现全局上下文销毁函数
    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        //实现 
    }
}

接下来在web.xml里面配置监听器的配置,在web.xml添加以下配置

<listener>
    <listener-class>listener.ContextLoaderListener</listener-class>
</listener>

接下来你就可以在 servlet中取到 全局变量里面test变量的值,代码如下

public class HelloOut extends HttpServlet {
    public void service(HttpServletRequest request,HttpServletResponse response) throws IOException {
        PrintWriter writer = response.getWriter();
        writer.println("Hello Word For Test");
        //获取全局变量
        ServletContext servletContext = getServletContext();
        //输出test变量
        writer.println(servletContext.getAttribute("test"));
        writer.close();
    }
}

PS:扩展,你还可以在listener实现一个计数器,每次运行contextInitialized方法计数+1,然后存到全局变量里去,在servlet中查看计数的值,你就验证contextInitialized 这个方法是否只运行了一次

下一篇文章是在servlet中使用EhCache

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 各个 Maven仓库 镜像(包括国内)

    本来之前用的OSC的Maven库,不过最近客户这边换了联通的网络之后,OSC的库就完全连不上了,不知道是不是因为OSC用的是天翼赞助的网络的原因,所以收集了一...

    用户1688446
  • JavaScript 判断 Chrome 内核的 360 浏览器

    代码 function isChrome360() { if( navigator.userAgent.toLowerCase().indexOf(...

    用户1688446
  • tablecloth 使用笔记

    tablecloth.js是一个能够只用寥寥几行代码即可快速美化你页面上HTML代码的jQuery插件。 tablecloth.js自身携带了多种表格风格...

    用户1688446
  • HLS IP Library?

    Vivado HLS提供了IP Library,这个C Library使得HLS可以直接由相应的C代码推断出Xilinx的IP,从而保证了高质量的FPGA实现。...

    Lauren的FPGA
  • debounceFnHook vue函数防抖hook

    copy_left
  • Qt开源作品4-网络调试助手

    网络调试助手和串口调试助手是一对的,用Qt开发项目与硬件通信绝大部分都是要么串口通信(RS232 RS485 Modbus等),要么就是网络通信(TCP UDP...

    feiyangqingyun
  • 从 0 到 1 实现 React 系列 —— 生命周期和 diff 算法

    本系列文章在实现一个 (x)react 的同时理顺 React 框架的主干内容(JSX/虚拟DOM/组件/生命周期/diff算法/...)

    牧云云
  • Python脚本自动下载小说

            本人喜欢在网上看小说,一直使用的是小说下载阅读器,可以自动从网上下载想看的小说到本地,比较方便。最近在学习Python的爬虫,受此启发,突然就想...

    py3study
  • SpringBoot开发案例之配置Druid数据库连接池

    好久没有更新Spring Boot系列文章,你说忙么?也可能是,前段时间的关注点也许在其他方面了,最近项目中需要开发小程序,正好采用Spring Boot实现一...

    小柒2012
  • 一场挑衅还是利益诱惑?腾讯云与法律都不容许

    腾讯云安全

扫码关注云+社区

领取腾讯云代金券