JavaWeb ServletContext接口

    1、 ServletContext是一个容器,可以用来存放变量,供一个web项目中多个Servlet共享。可以存储key-value结构的数据,并且可以进行修改、获取、移除操作。

		ServletContext servletContext=this.getServletContext();//获取一个ServletContext对象
		servletContext.setAttribute("zx", "zhangxiang");//存值
		String name=(String) servletContext.getAttribute("zx");//获取值
		System.out.println("zx"+"-->"+"zhangxiang");
		servletContext.removeAttribute("zx");//移除值
		name=(String)servletContext.getAttribute("zx");
		System.out.println("zx"+"-->"+name);

结果:


当tomcat启动时,会为每个web应用创建一个唯一的ServletContext对象代表当前Web应用.该对象不仅封装了当前web应用的所有信息,而且实现了多个servlet的数据共享.

在每个项目中可以有多个Servlet程序,每个Servlet程序都是独立的。Servlet中的配置信息可以使用ServletConfig获取,而当前这个项目的配置信息,就必须使用描述这个项目的ServletContext对象获取。


2、可以读取全局配置参数(在web.xml中的配置参数)

如在web.xml中写入如下配置参数

  <context-param>
  	<param-name>小米</param-name>
  	<param-value>1</param-value>
  </context-param>
  <context-param>
  	<param-name>华为</param-name>
  	<param-value>2</param-value>
  </context-param>  
   <context-param>
  	<param-name>中兴</param-name>
  	<param-value>3</param-value>
  </context-param>

然后可在Servlet的doGet()方法中写如下代码:

		Enumeration<String> keys=servletContext.getInitParameterNames();
		while (keys.hasMoreElements()) {
			String key = (String) keys.nextElement();
			String value= servletContext.getInitParameter(key);
			System.out.println(key+"--->"+value);			
		}

结果如图:(乱序输出,因为servletContext.getInitParameterNames()的返回值是一个枚举类型的迭代器Enumeration)

扫描二维码关注公众号,回复: 2866473 查看本文章


servletContext.getInitParameterNames()可以获取所有context-param中的键值对

servletContext.getInitParameter(key)可以通过一个键,获取对应的值


3、ServletContext可以获取Web工程中的资源文件的绝对路径

如在src中放置如下文件


从tomcat webapps文件里可以找到该文件对应的位置,在/WEB-INF/classes/目录下


然后在Servlet中通过servletContext.getRealPath()即可获取绝对路径

		String path=servletContext.getRealPath("/WEB-INF/classes/c3p0-config.xml");
		System.out.println(path);

结果:




猜你喜欢

转载自blog.csdn.net/zx2015216856/article/details/81009540