ServletContext对象

本文深入讲解了ServletContext对象在Web应用中的作用,如何实现不同用户间的数据共享,包括获取ServletContext对象的方法、使用它来存储和获取数据的过程,以及如何读取web.xml中的全局配置和获取项目资源的绝对路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

遇见的问题:

               request解决了一次请求内的数据的共享的问题,session解决了用户不同请求的数据共享的问题,那么不同的用户数据                之间的共享需要怎么办

解决方法:

                使用ServletContext对象

作用:

                解决不同用户之间的数据共享

原理:

                ServletContext对象由服务器创建,一个项目只有一个对象,不管在项目的任意位置进行获取得到的都是同一个对象,                  那么不同用户发起的请求获取到的也就是同一个对象了,该对象由用户所共有。

特点:

               由服务器创建,用户共享,一个项目只有一个

生命周期:

                服务器开启到服务器关闭

作用域:

                整个项目内

使用:

               1.获取ServletContext对象(常用的第一种和第三种)

//获取ServletContext对象
			//第一种方式
			ServletContext sc = this.getServletContext();
			//第二种方式
			ServletContext sc2 = this.getServletConfig().getServletContext();
			//第三种方式
			ServletContext sc3 = request.getSession().getServletContext();

               2.使用ServletContext实现数据共享

//使用servletcontext完成数据共享
			//数据存储   sc.sc.setAttribute(String name,Object value)
			sc.setAttribute("str", "servletContext对象学习");
            //获取数据
		    String value = (String)sc.getAttribute("str");

                  注意:如果数据不存在的话,取到的是null,这样也就是一个很重要的判断标准

                             不同的用户可以对ServletContext进行存储

                  3.获取项目中webx.xml文件中的全局配置

                              1.web.xml中设置全局配置

                               2.在Servlet中获取全局配置

<!-- 全局配置  如果多个变量,需要多个context-param-->
  <context-param>
  		<param-name>name</param-name>
  		<param-value>zhangsan</param-value>
  </context-param>
//获取web.xml中的全局配置
			String str = sc.getInitParameter("name");

                  注意:如果数据不存在返回null,在web.xml中配置是key-value形式,一个<context-param>标签,配置一个变量,多个,多个变量

                  作用:将静态数据和代码进行解耦(重要)

                   4.获取WebContent下的资源的绝对路径(获取部署在tomcat上的项目的路径)

//获取WebContent下的文件的绝对路径
			String path = sc.getRealPath("/doc/1.txt");
//获取到的是WebContent下的doc文件夹中的1.txt

                   5.获取项目根目录下资源的流对象

//获取WebContent下项目资源的流对象
			InputStream is = sc.getResourceAsStream("/doc/1.txt");

                   注意:此种方式只能获取项目根目录下的资源流对象,.class文件不能获取

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值