Javaweb之ServletContext

ServletContext在服务器启动时创建,在服务器关闭时销毁,一个JavaWeb应用只创建一个ServletContext对象。

ServletContext的作用:存取数据、读取web.xml中的应用初始化参数、获取应用资源。

在HttpServlet中,可以通过以下方法来获取ServletContext对象
ServletContext sc = this.getServletContext()

ServletContext sc = this.getServletConfig().getServletContext()

1.存取数据

一个JavaWeb应用中,只有一个ServletContext对象,所以在ServletContext中保存的数据可以共整个JavaWeb应用中的共享。
void setAttribute(String name, Object value):用来添加或替换ServletContext域数据
    > servletContext.setAttribute("x", "X"),添加域数据

    > servletContext.setAttribute("x", "XX"),覆盖域数据,因为在域中已经存在了名为x的数据,所以这次就是覆盖了

Object getAttribute(String name):通过名称来获取域数据

void removeAttribute(String name):通过名称移除域数据

Enumeration<String> getAttributeNames():获取所有域数据的名称

2.读取web.xml中的应用初始化参数

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  ...
  <context-param>
	<param-name>p1</param-name>
	<param-value>v1</param-value>  	
  </context-param>
  <context-param>
	<param-name>p2</param-name>
	<param-value>v2</param-value>  	
  </context-param>
  ...
</web-app>
 servletContext.getInitParameter("p1"),返回v1
 servletContext.getInitParameter("p2"),返回v2
 servletContext.getInitParameterNames(),返回Enumeration<String>,包含p1和p2

3.获取应用资源

String getRealPath(String path):获取资源的真实名称
String path = servletContext.getRealPath("/WEB-INF/a.jpg");
返回值为/WEB-INF/a.jpg真实路径,即磁盘路径,例如:f:/tomcat7/wabapps/JavaWeb01/WEB-INF/a.jpg
  
InputStream getResourceAsStream(String path):获取资源的输入流
InputStream in = servletContext.getResourceAsStream("/WEB-INF/a.jpg");

Set<String> getResourcePaths(String path):获取指定目录下的所有资源路径
Set<String> paths = servletContext.getResourcePaths("/WEB-INF");
返回的Set中包含如下字符串,例如:
    > /WEB-INF/lib/
    > /WEB-INF/classes/
    > /WEB-INF/web.xml
    > /WEB-INF/a.jpg

猜你喜欢

转载自blog.csdn.net/qq_41706150/article/details/80141720