servletcontext 使用解析

ServletContext详解
本文详细介绍了ServletContext对象的作用及使用方法,包括如何设置和获取初始化参数、如何使用属性进行数据共享,以及如何通过它获取Web应用的绝对路径。

简介:
每个应用都会有一个ServletContext对象与之关联,当容器分布在在多个虚拟机上时,web应用在所分布的每个虚拟机上都拥有一个ServletContext实例.缺省情况下,ServletContext不是分布式的,并且只存在于一个虚拟机上。
通过ServletContext可以访问应用范围的初始化参数和属性。

ServletContext

getContext(String uripath)

 String

getInitParameter(String name)

void

setAttribute(String name, Object object)

Object

getAttribute(String name)

RequestDispatcher

getRequestDispatcher(String path)

 String

getRealPath(String path)

RequestDispatcher

getRequestDispatcher(String path)

 Set

getResourcePaths(String path)

1).初始化参数

ServletContext对象是在Web应用程序装载时初始化的。正像Servlet具有初始化参数一样,ServletContext也有初始化参数。Servlet上下文初始化参数指定应用程序范围内的信息。[1]
在web.xml中配置初始化参数:

<context-param>
<param-name>adminEmail</param-name>
<param-value>webmaster</param-value>
</context-param>

<context-param>元素是针对整个应用的,所以并不嵌套在某个<servlet>元素中,该元素是<web-app>元 素的直接子元素。[1]
从Servlet中访问初始化参数:

ServletContext application=this.getServletContext();
out.println("send us your")
out.println(application.getInitParameter("email"));
out.println("'>email");

2).属性

可以通过编程的方式绑定,也可以作为web应用的全局变量被所有Servlet和JSPs访问
设置Context属性:

ServletContext application=this.getServletContext();
application.setAttribute("person1",new Person("Jim"));
application.setAttribute("person2",new Person("Green"));

获取Context属性:

ServletContext application=this.getServletContext();
Enumberation persons=application.getAttributeNames();
while(persons.hasMoreElements()){
String name=(String)persons.nextElement();
Person p=(Person)persons.getAttribute(name);
application.removeAttribute(name);  

在Web应用范围内存取共享数据的方法:

setAttribute(String name,java.lang.Objectobject):把一个java 对象和一个属性名绑定,并存放到ServletContext 中,参数name 指定属性名,参数Object 表示共享数据。
getAttribute(String name):根据参数给定的属性名,返回一个Object类型的对象。
getAttributeNames():返回一个Enumeration 对象,该对象包含了所有存放在ServletContext 中的属性名
removeAttribute(String name) : 根 据 参 数 指 定 的 属 性 名 , 从servletContext 对象中删除匹配的属性。
getRealPath("/"):得到绝对路径

实例:

public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
        //此时:test  工程
		ServletContext ctx = this.getServletContext();
		String ProjectPath = ctx.getRealPath("");
		String INFPath = ctx.getRealPath("/WEB-INF/");
		PrintWriter ou = response.getWriter();	   
	    ou.println(ProjectPath); //输出:D:\apache-tomcat-7.0.42\webapps\test
	    ou.println(INFPath);//输出:D:\apache-tomcat-7.0.42\webapps\test\WEB-INF
}

 举个实例:读配置文件:

ServletContext ctx = this.getServletContext();
String INFPath = ctx.getRealPath("/WEB-INF/");
LicenseSysConst.webInfPath = INFPath;
PropertyConfigurator.configure(LicenseSysConst.webInfPath + "/log4j.properties");
LicenseSysConst.propsPath = LicenseSysConst.webInfPath + "/cfg.properties";

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值