JavaWeb - 【Listener】初始化全局资源

Listener 与 < context-param >

  • Listener使用步骤
  • Listener功能
    • 初始化全局资源(读取配置文件)
  • ServletContext读取配置参数
    • context-param

一:Listener使用步骤

在这里插入图片描述

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;

@WebListener
public class MyServletContextListenerImpl implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {

    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {

    }
}
二:Listener初始化全局资源

相关文章: IO
在这里插入图片描述

MyServletContextListenerImpl.java

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.annotation.WebListener;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

@WebListener
public class MyServletContextListenerImpl implements ServletContextListener {

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        // 初始化全局资源
        // 1. 获取配置文件中context-param参数
        ServletContext servletContext = sce.getServletContext();
        String configuration = servletContext.getInitParameter("configuration");
        String configurationRealPath = servletContext.getRealPath(configuration);
        System.out.println(configurationRealPath);

        // 2. 获得输出流
        FileInputStream fileInputStream = null;
        try {
            fileInputStream = new FileInputStream(configurationRealPath);
            // 3. 将配置文件流添加到servletContext域中
            // 4.   或者解析该全局配置文件后将有用信息存储在ServletContext域中
            servletContext.setAttribute("configurationInputStream",fileInputStream);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        FileInputStream configurationInputStream = (FileInputStream) sce.
                getServletContext().getAttribute("configurationInputStream");
        if(configurationInputStream!=null){
            try {
                configurationInputStream.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}
三:ServletContext读取配置参数

在这里插入图片描述

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <context-param>
        <param-name>configuration</param-name>
        <param-value>/WEB-INF/classes/configuration.xml</param-value>
    </context-param>
</web-app>

在这里插入图片描述





在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值