ServletContext接口

  * javax.servlet.ServletContext

  * Tomcat服务器中ServletContecxt的完整类名: ServletContext:org.apache.catalina.core.ApplicationContextFacade

  *  获取ServletCotext

     - 分别创建两个Servlet实现类,分别获取两个Servlet实现类的ServletContecxt,发现输出的结果是一样的,是同一个内存地址

    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {

	//获取ServletConfig

	 ServletConfig config=getServletConfig();

	 //获取ServletContext

	 ServletContext application=config.getServletContext();

	 //输出ServletContext
System.out.println("ServletContext01'ServletContext"+application);
}
   *  总结:

	     1.javaweb程序员只需要面向 javax.servlet.ServletContext接口进行调用方法,不需要关心Tomcat对ServletContext接口的实现

             2. ServletContext可以完成跨用户传递数据,因为一个项目中的所有Servle共享一个ServletContext。

	     3.ServletContext到底是什么?  什么时候被创建?   什么时候被销毁?  一个WEb项目中创建几个?

	        > ServletContext被翻译为Servlet上下文

		> 一个WebApp只有一个ServletContext对象,无论有几个Servlet实现类都只有一个ServletContext对象。(而ServletConfig则是一个Servlet对象对应一个ServletConfig)

		> 一个Webapp只有一个Web.xml文件,所有的Servle对象的配置信息都写在这一个Web.xml文件中

		> Web.xml文件在服务器启动的时候被解析

		> ServletContext对象在服务器启动阶段被实例化

		> ServletContext对象在服务器关闭的时候被销毁

		> 得出结论 :ServletContext对应的是Web.xml文件,是Web.xml文件的代表。

		> ServletContext是所有Servlet对象四周环境的代表{在同一个Webapp中所有的Servlet共享同一个ServletContext}

		> 所有用户如果想共享同一个数据,可以把该数据放在ServletContext对象中。可实现跨用户传递数据。

		> 一般放在ServletContext对象中的数据是不建议涉及到修改操作的,因为可能触发线程安全问题。

  * ServletContext中有哪些常用的方法?

                -  void  setAttribute(String name,Object object)   向ServletContext中添加数据

                       BServletContext.setAttribute("学历","大学本科");

                -  Object getAttribute(String name)   从ServletContext 获取数据

                      Object obj=BServletContext.getAttribute("学历");

                - Enumeration   getAttributeNames();  获取所有ServletContext中数据的name

                        Enumeration attributeNames=BServletContext.getAttributeNames();
while(attributeNames.hasMoreElements()){
Object name=attributeNames.nextElement();
Object value=BServletContext.getAttribute((String)name);
System.out.println(name+"="+value);
} - void removeAttribute(String name) 移除ServletContext中的数据 AServletContext.removeAttribute("学历"); - String getInitParameter(String name) // 通过name获取value String value=application.getInitParameter(name); - 什么是ParameterNames? <param-name>name</param-name> <context-param>
<param-name>name</param-name>
<param-value>ShiGe</param-value>
</context-param> <context-param>
<param-name>age</param-name>
<param-value>18</param-value>
</context-param> - Enumeration getInitParameterNames // 获取所有上下文初始化参数的name public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { //获取ServletConfig ServletConfig config=getServletConfig(); //获取ServletContext ServletContext application=config.getServletContext(); //获取所有上下文初始化参数的name Enumeration<String> names=application.getInitParameterNames(); while(names.hasMoreElements()) { String name=names.nextElement(); //通过name获取value
String value=application.getInitParameter(name); //out.print(name+"="+value); System.out.println(name+"="+value);
} } - String getRealPath(String path) 获取项目中某个文件的绝对路径 String path = BServletContext.getRealPath("index.html");
System.out.println(path); * Servlet, ServletConfig, ServletContext 三者之间的关系。 - 一个Servlet对应一个ServletConfig,一百个Servlet对应一百个ServletConfig。 - 所有的Servlet实例对象共享一个ServletContext对象 - 一个Web项目中只有一个web.xml文件,一个web.xml中包含了所有Servlet实例对象的配置信息。

JAVAEE_Servlet_06_ServletContext接口的更多相关文章

  1. App开发:模拟服务器数据接口 - MockApi

    为了方便app开发过程中,不受服务器接口的限制,便于客户端功能的快速测试,可以在客户端实现一个模拟服务器数据接口的MockApi模块.本篇文章就尝试为使用gradle的android项目设计实现Moc ...

  2. 干货来袭-整套完整安全的API接口解决方案

    在各种手机APP泛滥的现在,背后都有同样泛滥的API接口在支撑,其中鱼龙混杂,直接裸奔的WEB API大量存在,安全性令人堪优 在以前WEB API概念没有很普及的时候,都采用自已定义的接口和结构,对 ...

  3. 12306官方火车票Api接口

    2017,现在已进入春运期间,真的是一票难求,深有体会.各种购票抢票软件应运而生,也有购买加速包提高抢票几率,可以理解为变相的黄牛.对于技术人员,虽然写一个抢票软件还是比较难的,但是还是简单看看123 ...

  4. Java基础Map接口+Collections工具类

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  5. Java基础Map接口+Collections

    1.Map中我们主要讲两个接口 HashMap  与   LinkedHashMap (1)其中LinkedHashMap是有序的  怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...

  6. java基础_集合List与Set接口

    List接口继承了Collection的方法  当然也有自己特有的方法向指定位置添加元素   add(索引,添加的元素); 移除指定索引的元素   remove(索引) 修改指定索引的元素   set ...

  7. 【WCF】自定义错误处理(IErrorHandler接口的用法)

    当被调用的服务操作发生异常时,可以直接把异常的原始内容传回给客户端.在WCF中,服务器传回客户端的异常,通常会使用 FaultException,该异常由这么几个东东组成: 1.Action:在服务调 ...

  8. PHP以接口方式实现多重继承(完全模拟)--学习笔记

     1.UML类图: 2.PHP代码: <?php /** * Created by PhpStorm. * User: andy * Date: 16-11-23 * Time: 下午7:57 ...

  9. 【微框架】Maven +SpringBoot 集成 阿里大鱼 短信接口详解与Demo

    Maven+springboot+阿里大于短信验证服务 纠结点:Maven库没有sdk,需要解决 Maven打包找不到相关类,需要解决 ps:最近好久没有写点东西了,项目太紧,今天来一篇 一.本文简介 ...

随机推荐

  1. nginx反向代理理解

    实际开发中,会有不同的环境: - 开发环境:自己的电脑- 测试环境:提供给测试人员使用的环境- 预发布环境:数据是和生成环境的数据一致,运行最新的项目代码进去测试- 生产环境:项目最终发布上线的环境 ...

  2. SpringBoot读取配置文件的内容

    1.@Value读取 在springboot项目中,如果要读取配置文件application.properties或application.yml文件的内容,可以使用自带的注解@Value.以prop ...

  3. vue-axios插件、django-cors插件、及vue如何使用第三方前端样式库:element/jQuery/bootstrap

    目录 一.vue的ajax插件:axios 1.安装axios 2.axios参数 二.CORS跨域问题(同源策略) 1.Django解决CORS跨域问题方法 三.前端请求携带参数及Django后台如 ...

  4. Svelte 码半功倍

    你未注意到的最重要的指标. 注意:原文发表于2019-04-20,随着框架不断演进,部分内容可能已不适用. 所有代码都有 BUG,你写的越多,BUG 越多,这很合情合理. 同时,写的越多,费时越多,留 ...

  5. RocketMQ(4.8.0)——Broker 的关机恢复机制

    Broker 的关机恢复机制 一.Broker关机恢复概述 Broker关机恢复是指恢复 CommitLog.Consume Queue.Index File 等数据文件.Broker 关机分为正常调 ...

  6. Cloudam云端携手高校探索云计算在生命科学领域的应用

    随着云计算服务和实践的成熟,越来越多的行业对于云计算的需求也日益增加.不同行业的需求与云计算融合,就需要更大的算力支撑.这也意味着,云计算的需求市场日渐扩大,Cloudam云端自主研发的云E算力平台应 ...

  7. Linux下找出吃内存的方法总结

    Linux下查询进程占用的内存方法总结,假设现在有一个「php-cgi」的进程 ,进程id为「25282」. 现在想要查询该进程占用的内存大小.linux命令行下有很多的工具进行查看,现总结常见的几种 ...

  8. FreeBSD 将降低对 i386 架构的支持力度

    FreeBSD 开发团队宣布,从 FreeBSD 13.0 开始,对 i386 架构的支持级别将降级为 Tier 2,未来的 14.0 可能还将会在此基础上进一步降低对 i386 架构的支持.而对于 ...

  9. Django中间件(中间件版登陆验证、访问频率限制)

    一.介绍 官方的说法:中间件是一个用来处理Django的请求和响应的框架级别的钩子.它是一个轻量.低级别的插件系统,用于在全局范围内改变Django的输入和输出.每个中间件组件都负责做一些特定的功能. ...

  10. 一招教你写博客,Typora+PicGo+阿里云oss,最好用的Markdown+最好用的图床工具!

    博客 写博客的好处 1.使自己变得更善于观察.一旦你养成了记博客的习惯,与此同时你也赋予了一个更好的机会给自己,让自己去更细致地观察生活.一个人的生活经历本就是价值连城的,从中学习到的知识,教训更是异 ...