Servlet上下文 ServletContext

上下文接口    ServletContext接口
    每一个应用都有唯一的一个上下文对象,即为ServletContext对象
    ServletContext对象可以和请求、会话对象一样处理属性
        setAttribute
        getAttribute
        removeAttribute
    当容器启动时,会加载容器中的每一个应用,并针对每一个应用创建一个对象,称为上下文(context)对象。每一个应用只有一个唯一的上下文对象。Servlet API中提供了ServletContext接口来表示上下文对象。例如,Tomcat下有一个项目capter10,启动tomcat的时候,就会为capter10初始化唯一一个ServletContext独享,作为全局的信息存储空间。
    
    获取上下文对象:
        Servlet.getServletConfig(), ServletConfig.getServletContext()
        或者使用HttpServlet中的getServletContext()方法
    ServletContext接口中有很多方法,其中较为常见的是用来存储、获取上下文属性的方法,方法名和含义与请求和会话中的相关方法类似。
     Object getAttribute(String name)
          Returns the servlet container attribute with the given name, or null if there is no attribute by that name.
    Enumeration getAttributeNames()
          Returns an Enumeration containing the attribute names available within this servlet context.
    ServletContext getContext(String uripath)
          Returns a ServletContext object that corresponds to a specified URL on the server.
    String getContextPath()
          Returns the context path of the web application.
    String getInitParameter(String name)
          Returns a String containing the value of the named context-wide initialization parameter, or null if the parameter does not exist.
    Enumeration getInitParameterNames()
          Returns the names of the context's initialization parameters as an Enumeration of String objects, or an empty Enumeration if the context has no initialization parameters.
    RequestDispatcher getNamedDispatcher(String name)
          Returns a RequestDispatcher object that acts as a wrapper for the named servlet.
    String getRealPath(String path)
          Returns a String containing the real path for a given virtual path.
    RequestDispatcher getRequestDispatcher(String path)
          Returns a RequestDispatcher object that acts as a wrapper for the resource located at the given path.
    void removeAttribute(String name)
          Removes the attribute with the given name from the servlet context.
    void setAttribute(String name, Object object)
          Binds an object to a given attribute name in this servlet context.
          
    使用例子:
        使用ServletContext进行登录人次的统计。
        在jsp中,直接使用application内置对象就是该应用的ServletContext
        多次登录成功后,计数信息将被累加,但是,如果服务器重启,或者应用被重新加载,上下文对象将被小辉,那么计数器将被清0,解决这个问题就需要使用监听器。
        
    上下文参数
    在web.xml中可以配置上下文参数,在整个上下文中有效
    <context-param>
        <param-name>path</param-name>
        <param-value>/WEB-INF/props</param-value>
    </context-param>
    获取上下文参数的方法:
        public String getInitParameter(String name):该方法通过上下文参数名字,获取上下文参数的值
    上下文参数封装到上下文对象中,而上下文对象是全局的,一个应用只有唯一的一个上下文对象。所以上下文参数可以被该应用下任何Servlet或者jsp使用,在JSP中如果要使用上下文参数,可以直接使用application.getInitParameter.
    
    ServletConfig和ServletContext都有一个getInitParameter方法,有什么区别?
        ServletConfig中的getInitParameter获取的是Servlet类的初始化参数。在web.xml中的servlet标记中通过<init-param>设置。Servlet初始化参数只能被该Servlet使用,其他servlet无法使用。ServletContext中的getInitParameter方法,获取的是上下文参数,在web.xml中通过<context-param>设置,可以被该应用下任何一个资源使用。
        
使用的例子:

 

ServletContext context=this.getServletContext();
Integer count=(Integer) context.getAttribute("count");
  <!--
jsp是特殊的Servlet,不好直接获取ServletContext,我们可以直接使用jsp的内置对象application,不需要声明创建
-->
您是第<%=application.getAttribute("count") %>位访问者<br/>
<a href="<%=response.encodeURL("showOwn") %>">显示个人信息</a>
  <context-param>
<param-name>path</param-name>
<param-value>upload</param-value>
</context-param>
       ServletContext context=this.getServletContext();
String path=context.getInitParameter("path");
File file=new File(path);
file.mkdirs();

Context上下文对象(抄书的)的更多相关文章

  1. Asp.Net SignalR Hub中的上下文对象

    Hub中的 Context 使用了集线器后,会发现对比持久连接类少了OnConnectioned这样的事件,事实上是有的.需要我们去override .这下似乎发现了什么问题,记得持久连接类中有con ...

  2. EF上下文对象线程内唯一性与优化

    在一次请求中,即一个线程内,若是用到EF数据上下文对象,就创建一个,这也加是很多人的代码中习惯在使用上下文对象时,习惯将对象建立在using中,也是为了尽早释放上下文对象, 但是如果有一个业务逻辑调用 ...

  3. [译] ASP.NET 生命周期 – ASP.NET 上下文对象(五)

    ASP.NET 上下文对象 ASP.NET 提供了一系列对象用来给当前请求,将要返回到客户端的响应,以及 Web 应用本身提供上下文信息.间接的,这些上下文对象也可以用来回去核心 ASP.NET 框架 ...

  4. Servlet配置对象、上下文对象、多线程问题

    一.Servlet配置对象(ServletConfig):Servlet初始化时,容器调用其init(ServletConfig)方法,传递该对象. 1.获得对象方法: (1).直接使用getServ ...

  5. 基于Spring DM管理的Bundle获取Spring上下文对象及指定Bean对象

    在讲述服务注册与引用的随笔中,有提到context.getServiceReferences()方法,通过该方法可以获取到OSGI框架容器中的指定类型的服务引用,从而获取到对应的服务对象.同时该方法还 ...

  6. Asp.Net Core 轻松学-使用MariaDB/MySql/PostgreSQL和支持多个上下文对象

    前言 在上一篇文章中(Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库)[https://www.cnblogs.com/viter/p/10243577.html],介 ...

  7. Android开发 ---ContentProvider数据提供者,Activity和Service就是上下文对象,短信监听器,内容观察者

    1.activity_main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayou ...

  8. Flask的Context(上下文)学习笔记

    上下文是一种属性的有序序列,为驻留在环境内的对象定义环境.在对象的激活过程中创建上下文,对象被配置为要求某些自动服务,如同步.事务.实时激活.安全性等等. 比如在计算机中,相对于进程而言,上下文就是进 ...

  9. Asp.Net Core获取当前上下文对象

    HttpContext简介 .Net Core中的HttpContext上下文是个抽象类,命名空间为Microsoft.AspNetCore.Http 所在程序集 \netstandard2.0\Mi ...

随机推荐

  1. (转)排列算法 Permutation Generation

    转自:http://www.cnblogs.com/dragonpig/archive/2010/01/21/1653680.html http://www.notesandreviews.com/p ...

  2. Hungary(匈牙利算法)——二分图最大匹配

    在复习匈牙利算法的时候,发现这么一篇介绍匈牙利算法的文章,非常通俗易懂,所以就借鉴过来了. 复杂度:邻接矩阵:O(v^3)邻接表:O(V*E) 附上链接:趣写算法系列之--匈牙利算法 下面就附上代码吧 ...

  3. iOS16进制设置颜色

    UIColor+Hex.h // // UIColor+Hex.h // 16进制颜色类别 // // Created by apple on 15-4-3. // Copyright (c) 201 ...

  4. 评论 “App死亡潮:400万应用僵尸超八成,周期仅10月”

    点这里 原文: App死亡潮:400万应用僵尸超八成,周期仅10月 时间 2015-04-05 22:48:19  和讯科技相似文章 (16)原文  http://tech.hexun.com/201 ...

  5. 历代诗词咏宁夏注释2_----苍岩道人<登文昌阁>

    登文昌阁[1] 苍岩道人 壮年碌碌走尘埃,此地清幽不肯来. 老去始惊春梦促,韶光易过槿花开.[2] 历朝兴废书千卷,万古忠奸土一堆.[3] 惟爱莎罗歌最好,闲时拍板满斟杯.[4] 注释 [说明]选自& ...

  6. elasticsearch 八、重要的配置更改

    http://jingyan.baidu.com/article/7908e85c9fc626af491ad263.html

  7. ***mysql索引总结----mysql索引类型以及创建

    文章归属:http://feiyan.info/16.html,我想自己去写了,但是发现此君总结的非常详细.直接搬过来了 关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基 ...

  8. hdu 3271 SNIBB 数位DP+二分

    思路:dp[i][j]:表示第i位在B进制下数字和. 用二分找第k个数! 代码如下: #include<iostream> #include<stdio.h> #include ...

  9. error LNK2019: 无法解析的外部符号 ___glutInitWithExit@12,该符号在函数 _glutInit_ATEXIT_HACK@8 中被引用 1>GEARS.obj : er

    转: http://blog.csdn.net/bill_ming/article/details/8150111 opengl的高级菜鸟问题 看了一本书<OpenGL三维图形系统开发与应用技术 ...

  10. initWithFrame方法的理解

    initWithFrame方法的理解   有时候,知道initWithFrame方法如何用,但是么有弄明白initWithFrame方法到底是什么? 那就通过查资料弄明白.     1. initWi ...