Servlet 使用ServletContext共享数据,读取web.xml配置

ServletContext对象

  session和cookie,对于每一个请求用户来说,都是不同的,因为要保证隐私安全。

  而有一些数据,可以让所有用户共享,此时就可以用ServletContext对象。只要在一个Servlet中设置了ServletContext属性值,那么本项目的中任意一个Servlet中都可以获取到设置的属性值。作用范围是所有Servlet,而有效期是服务器关闭之前。

public class TestServletContext extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		
		// 获取Servlet的三种方式,获取的ServletContext对象是相同的。
		//ServletContext context = this.getServletContext();
		//context = req.getSession().getServletContext();
		//ontext = this.getServletConfig().getServletContext();
		
		ServletContext context = this.getServletContext();
		
		// 设置属性值setAttribute(String name, Object object)
		context.setAttribute("name", "张三");
		
		// 获取属性值,如果不存在,则返回null
		String name  = (String)context.getAttribute("name");
	}
}

  

使用ServletContext来获取web.xml中的配置项

  之前讲了可以使用Properties工具类来获取配置文件中的配置项,这里,同样可以使用ServletContext来实现。

  不过需要注意的是,ServletContext对象能够读取的配置项需要专门配置:

# 下面创建了两个配置项,分别是name=张三,age=99
<context-param>
	<param-name>name</param-name>
	<param-value>张三</param-value>
</context-param>

<context-param>
	<param-name>age</param-name>
	<param-value>99</param-value>
</context-param>

  使用ServletContext读取配置的实例:

ServletContext context = this.getServletContext();
String name = (String)context.getInitParameter("name");
int age = Integer.parseInt(context.getInitParameter("age"));
System.out.println("从web.xml读取到全局配置如下:\n" + "name :" + name + "\t age :" + age);

  运行结果如下:

从web.xml读取到全局配置如下:
name :张三	 age :99

  

猜你喜欢

转载自www.cnblogs.com/-beyond/p/10080409.html