Web--(10)ServletContext

本文深入解析了ServletContext的概念,其作为Web应用的上下文对象,负责封装Web应用信息,贯穿应用的整个生命周期。介绍了如何在Servlet中获取ServletContext,以及它在获取初始化参数、资源路径和作为域对象进行数据共享等方面的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ServletContext

什么是ServletContext

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

ServletContext的生命周期

  1. 在服务器一启动的时候就会创建
  2. 在服务器关闭的时候销毁

如何获得上下文

  1. 通过init方法当中一个参数ServletConfig来获取
  2. 直接在HttpServlet当中获取
    this.getServletContext 这种方法本质还是通过config来去获取的

在JAVA src 创建com.iris.servlet
在该包下通过注解创建两个Servlet OneServlet.java, SecondServlet.java

package com.iris.servlet;

import java.io.IOException;
import javax.servlet.ServletConfig;
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;

@WebServlet("/OneServlet")
public class OneServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	public void init(ServletConfig config) throws ServletException {
		// TODO Auto-generated method stub
		super.init(config);  //复写父类方法 servlet 中 this.getServletContext() 才有效
		ServletContext sc1 = config.getServletContext();
		System.out.println(sc1);
	}


	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		ServletContext context = this.getServletContext();
		System.out.println(context);
		System.out.println("OneServlet");
	}
}
package com.iris.servlet;

import java.io.IOException;
import javax.servlet.ServletConfig;
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;


@WebServlet("/SecondServlet")
public class SecondServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;


	public void init(ServletConfig config) throws ServletException {
		// TODO Auto-generated method stub
		ServletContext sc2 = config.getServletContext();
		System.out.println(sc2);
	}


	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		System.out.println("this is SecondServlet");
	}
}

在这里插入图片描述
在这里插入图片描述
ServletContent 对象是全局的

获取全局的初始化参数

  1. 初始化参数不能再某一个Servlet当中来去配置。在最外层来去配置
    在这里插入图片描述

  2. 获取全局初始化参数
    在这里插入图片描述

获得Web应用中某一个资源的资源的绝对路径(路径拼接)

  1. context.getRealPath("文件")
  2. 相对的是webapps的根目录D:\Java\Tomcat\apache-tomcat-7.0.85\webapps\Servlet_Content
    1. context.getRealPath("index.html")
    2. D:\Java\Tomcat\apache-tomcat-7.0.85\webapps\Servlet_Content\index.html
      在会你写的名称前面自动拼接上当前工程的绝对地址
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		String realPath = context.getRealPath("a.txt");
		System.out.println(realPath);	
		//通过类加载器,获取字节码的路径, 先加载文件,再获取路径
		//到字节码目录中加载资源,即服务器 Webapps/WEB-INF/classes 下
		String path = OneServlet.class.getClassLoader().getResource("c.txt").getPath();
		System.out.println(path);
	}

在这里插入图片描述

ServletContext是一个域对象

  1. 什么是域?
    能够存储数据
  2. 域对象
    能够存取数据数据就的对象
  3. ServletContext域对象的作用范围
    整个web应用
    所有的web资源都可以进行存取数据
    数据是可以共享的
    获取完ServletContext之后向里面写数据
    context.setAttribute(String name,Object value);
    获取完ServletContext之后,通过name取出存放的数据
    context.getAttribute(String name);
    获取完ServletContext之后,删除指定名称的值
    Context.removeAttribute(String name);
    只要是一个域对象上,基本上里面都有这几个方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值