ServletContext使用介绍

  ServletContext是一个容器(域对象)可以存储键值对数据(String key,Object value),保存在ServletContext中的数据不仅可以提供给所有的servlet使用,而且可以在整个项目范围内使用;

  服务器会在启动的时候,就为它所托管的每一个项目都创建一个ServletContext实例对象,并且每个项目中有且只有一个ServletContext实例对象;

  获取Servlet上下文方式

GenericServlet提供了getServletContext()方法

ServletConfig提供了getServletContext()方法

HttpSession提供了getServletContext()方法

HttpServletRequest提供了getServletContext()方法

  获取MIME类型

    • API介绍
MIME类型:在互联网通信过程中定义的一种文件数据类型
格式: 大类型/小类型   text/html		image/jpeg
String getMimeType(String file) 

  ServletContext作为域对象

    • API介绍
ServletContext getServletContext()  获取ServletContext对象

void setAttribute(String name, Object object)  往servletcontext容器中存入数据,name为数据名称,object为数据的值

Object getAttribute(String name)  从ServletContext中获取数据,根据指定的数据名称

void removeAttribute(String name)  从ServletContext中移除数据,根据指定的数据名称

ServletContext对象范围:所有用户所有请求的数据

  只要容器不关闭或者应用不关闭,Servlet上下文就一直存在 ;
  注意:使用ServletContext对象,需要先获取ServletContext对象;

  ServletContext获取资源文件的真实路径

    ServletContext对象调用getRealPath("路径")方法,可以获得文件的真实路径;

    getRealPath()获取的默认路径是Tomcat安装路径下的webApps目录下的项目路径,然后找到该项目的WEB-INF目录,里面有个classes文件夹,src下的文件编译后全部放在该文件夹中;

ServletContext context = request.getServletContext();

// src目录下的src.txt
String src_path = context.getRealPath("/WEB-INF/classes/src.txt");  //找不到路径
System.out.println(src_path);

// WEB-INF目录下的web-inf.txt
String webInfPath = context.getRealPath("/WEB-INF/web-inf.txt");
System.out.println(webInfPath);

// web目录下的web.txt
String webPath = context.getRealPath("/web.txt");
System.out.println(webPath);

  

原文地址:https://www.cnblogs.com/coder-zyc/p/10632722.html