/**
* ServletContext对象学习
* 问题:
* 不同的用户使用相同的数据
* 解决:
* ServletContext对象
* 特点:
* 服务器创建
* 用户共享
* 作用域:
* 整个项目内
* 生命周期:
* 服务器启动到服务器关闭
* 使用:
* 获取ServletContext对象
* //第一种方式:
ServletContext sc=this.getServletContext();
//第二种方式:
ServletContext sc2=this.getServletConfig().getServletContext();
//第三种方式:
ServletContext sc3=req.getSession().getServletContext();
* 使用ServletCOntext对象完成数据共享
* sc.setAttribute(String,Object);
* sc.getAttribute(String) 返回的是Object
* 注意:
* ` 不同的用户可以给ServletContext对象进行数据的存取
* 获取的数据不存在返回Null
* //获取项目web.xml的全局配置数据
*
* //配置方式:注意一组<context-param>标签只能存储一组键值对数据,多组可以声明多个<context-param>进行存储
* <!-- 配置全局数据 -->
<context-param>
<param-name>name</param-name>
<param-value>zhangsan</param-value>
</context-param>
String str=sc.getInitParameter(String name);根据键的名字返回web.xml中配置的全局数据的值
sc.getInitParameterNames();返回键名的枚举
作用:将静态数据和代码进行解耦
* //获取项目webroot下的资源的绝对路径
* //String pathString="D:\apache-tomcat\apache-tomcat-7.0.56\webapps\\sc\\doc\\1.txt";
* 获取的路径为项目的根目录,path参数为项目根目录中的路径
* String path=sc.getRealPath(Stirng path);
* //获取webroot下的资源的流对象
* InputStream is=sc.getResourceAsStream(String path);
* 注意:
* 此种方式只能获取项目根目录的下的资源流对象,class文件的流对象需要使用类加载器获取
* path参数为项目跟目录的中的路径
*
* @author Administrator
*
*/
public class ServletContextServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//获取ServletContext对象
//第一种方式:
ServletContext sc=this.getServletContext();
//第二种方式:
ServletContext sc2=this.getServletConfig().getServletContext();
//第三种方式:
ServletContext sc3=req.getSession().getServletContext();
System.out.println(sc==sc2);
System.out.println(sc2==sc3);
//使用ServletContext对象完成数据共享
//数据存储
sc.setAttribute("str","ServletContext对象学习");
//获取项目web.xml的全局配置数据
String str=sc.getInitParameter("name");
System.out.println("全局配置参数:"+str);
//获取项目根目录下的资源的绝对路径
//String pathString="D:\apache-tomcat\apache-tomcat-7.0.56\webapps\\sc\\doc\\1.txt";
String path=sc.getRealPath("/doc/1.txt");
System.out.println(path);
//获取项目根目录下资源的流对象
InputStream is=sc.getResourceAsStream("/doc/1.txt");
}
}
好好学习,天天向上。
努力工作,给自己的和家人一个满意的答案。。。。
![](https://img2024.cnblogs.com/blog/35695/202408/35695-20240826070647288-243310440.jpg)