浅谈ServletContext
来源:互联网 发布:中级程序员资格考试 编辑:程序博客网 时间:2024/05/17 20:21
一.ServletContext概述
WEB容器在启动时,它会为每个WEB应用程序都创建一个对应的ServletContext对象,它代表当前web应用,服务器开始,其就存在,服务器关闭,其才释放。
由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,它是一个全局的储存信息的空间,因此Servlet对象之间可以通过ServletContext对象来实现通讯。ServletContext对象通常也被称之为context域对象
二.ServletContext中的常用方法
(1)Object getAttribute(String name) 返回servlet上下文中具有指定名字的对象,或使用已指定名捆绑一个对象。从Web应用的标准观点看,这样的对象是全局对象,因为它们可以被同一servlet在另一时刻访问。或上下文中任意其他servlet访问。
(2)void setAttribute(String name,Object obj) 设置servlet上下文中具有指定名字的对象。
(3)Enumeration getAttributeNames() 返回保存在servlet上下文中所有属性名字的枚举。
(4)String getInitParameter(String name) 返回指定上下文范围的初始化参数值。此方法与ServletConfig方法名称不一样,后者只应用于已编码的指定servlet。此方法应用于上下文中所有的参数。
(5)Enumeration getInitParameterNames() 返回(可能为空)指定上下文范围的初始化参数值名字的枚举值。
(6)InputStream getResourceAsStream 以 InputStream 对象的形式返回位于指定路径上的资源
(7)String getRealPath 为给定虚拟路径返回包含实际路径的 String
三.ServletContext的三个功能
1.使用ServletContext对象读取web项目中的资源文件,共有两种方式
(1)方式一:通过InputStream getResourceAsStream(java.lang.String path) :得到要操作文件的输入流
代码:
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //创建对象 Properties p=new Properties(); //得到ServletContext对象 ServletContext context=getServletContext(); //得到要操作的文件的输入流 //文件放到src下面 InputStream in1=context.getResourceAsStream("/WEB-INF/classes/cn/itcast/ServletContext/db3.properties"); //文件放到webroot下面 InputStream in2=context.getResourceAsStream("/db.properties"); //文件放到包里面 InputStream in3=context.getResourceAsStream("/WEB-INF/db1.properties"); p.load(in1); String url=p.getProperty("url"); String username=p.getProperty("username"); String password=p.getProperty("password"); System.out.println(url+":"+username+":"+password);
(2)方式二:String getRealPath(java.lang.String path) :得到要操作文件的完全路径(带盘符的路径)
代码:
//得到ServletContext对象 ServletContext context=getServletContext(); //得到文件的路径 String path=context.getRealPath("/db.properties"); //得到要操作的文件的输入流 InputStream in=new FileInputStream(path);
(3)另外可以通过方式三:使用类加载器读取
代码://得到类的classClass clazz=ServletDemo7.class;//得到类的加载器ClassLoader load=clazz.getClassLoader();//得到要操作文件的输入流InputStream in=load.getResourceAsStream("/db1.properties");
2.获取全局的初始化参数
(1)配置全局初始化参数
<context-param> <param-name>url</param-name> <param-value>localhost</param-value> </context-param>
(2)String getInitParameter(String name) :根据名称得到全局初始化参数的值
* 代码 //得到servletContext对象 ServletContext context = getServletContext(); //根据名称得到全局初始化参数的值 String url = context.getInitParameter("url"); String name = context.getInitParameter("name"); Enumeration getInitParameterNames() :得到所有的全局初始化参数的名称 * 代码 //得到servletContext对象 ServletContext context = getServletContext(); //使用方法得到所有的全局初始化参数的名称 Enumeration<String> enumrEnumeration = context.getInitParameterNames(); //得到每个全局初始化参数的名称 while(enumrEnumeration.hasMoreElements()) { String name = enumrEnumeration.nextElement(); String value = context.getInitParameter(name); System.out.println(name+" :: "+value); }
3.多个Servlet通过ServletContext对象实现数据共享。ServletContext对象通常也被称之为context域对象
存值:setAttribute(String name, Object object)
取值:getAttribute(String name)
代码: 在InitServlet的Service方法中利用ServletContext对象存入需要共享的数据 /*获取ServletContext对象*/ ServletContext context = this.getServletContext(); //存入共享的数据 context.setAttribute("name", "zhangsan"); 在其它的Servlet中利用ServletContext对象获取共享的数据 /*获取ServletContext对象*/ ServletContext context = this.getServletContext(); //获取共享的数据 String name = context.getAttribute("name"); System.out.println("共享的内容值是:"+name);
- 浅谈ServletContext
- 浅谈ServletContext
- 浅谈ServletContext,HttpServletRequest,HttpServletResponse,HttpSession的获取
- ServletContext
- ServletContext
- servletcontext
- servletContext
- servletContext
- servletcontext
- ServletContext
- ServletContext
- servletContext
- ServletContext
- ServletContext
- servletContext
- ServletContext
- servletContext
- ServletContext
- 【Java高级】Java中NIO非阻塞socket通信
- 关于Ubuntu Kylin下载后vim的更新。
- WebForm总结_服务器内部执行过程
- java设计界面与按钮之间的连接方法
- nyoj--82--一笔画问题
- 浅谈ServletContext
- AndroidStudio中使用Git发布与更新,同步到本地(github关联)
- MongoDB整库备份与还原以及单个collection备份、恢复方法
- WebForm总结_application应用程序生命周期
- android 中的 ContentObserver (一)
- ASP.NET 页生命周期
- html+css
- Fragment生命周期2
- 指针和引用的区别