JavaWeb—ServletContext(读取resources文件的两种方式)

什么是ServletContext

ServletContext代表是一个web应用的上下文对象(web应用对象),里面封装的都是web应用信息,一个ServletContext对应一个应用。

ServletContext的生命周期

在服务器一启动的时候就会创建,在服务器关闭的时候销毁。

如何获得上下文

  • 通过init方法当中一个参数ServletConfig来获取
  • 直接在HttpServlet当中获取:
this.getServletContext()

这种方法本质还是通过config来去获取的

获取全局的初始化参数

初始化参数不能再某一个Servlet当中来去配置。在最外层来去配置

<?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>name</param-name>
        <param-value>youyuan</param-value>
    </context-param>

</web-app>

获取全局初始化参数:

package org.youyuan.servlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/myservlet")

public class myServlet extends HttpServlet{
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("servlet");
        ServletContext servletContext = this.getServletContext();
        System.out.println(servletContext.getInitParameter("name"));      
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request,response);
    }
}

控制台打印出:
在这里插入图片描述

获得Web应用中某一个资源的资源的绝对路径,读取文件内容

第一种:
在这里插入图片描述
db.properties:

name = zs
age = 23
@WebServlet("/getPropertiesServlet")
public class getPropertiesServlet extends HttpServlet {

    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletContext servletContext = this.getServletContext();
        /*获取相对路径的输入流对象*/
        InputStream resourceAsStream = servletContext.getResourceAsStream("/WEB-INF/classes/db.properties");
        Properties properties = new Properties();
        properties.load(resourceAsStream);
        System.out.println("name="+properties.getProperty("name"));
        System.out.println("age="+properties.getProperty("age"));

    }

}

控制台打印结果:
在这里插入图片描述

第二种:


@WebServlet("/getPropertiesServlet2")
public class servlet extends HttpServlet {
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletContext servletContext = this.getServletContext();
        //获取文件绝对路径
        String realPath = servletContext.getRealPath("/WEB-INF/classes/db.properties");
        FileInputStream inputStream = new FileInputStream(realPath);
        Properties properties = new Properties();
        properties.load(inputStream);
        System.out.println("name="+properties.getProperty("name"));
        System.out.println("age="+properties.getProperty("age"));
    }

}


控制台打印结果:
在这里插入图片描述

ServletContext是一个域对象

  • 什么是域?能够存储数据。

  • 域对象? 能够存取数据数据就的对象。

  • ServletContext域对象的作用范围?
    1.整个web应用。
    2.所有的web资源都可以进行存取数据
    3.数据是可以共享的。

  • 获取完ServletContext之后向里面写数据
    context.setAttribute(String name,Object value);

  • 获取完ServletContext之后,通过name取出存放的数据
    context.getAttribute(String name);

  • 获取完ServletContext之后,删除指定名称的值
    Context.removeAttribute(String name);

  • 只要是一个域对象上,基本上里面都有这几个方法

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值