1,作用:

  ServletContext对象 ,叫做Servlet的上下文对象。表示一个当前的web应用环境。一个web应用中只有一                                                                    个ServletContext对象。

2,对象的创建

  加载web应用时创建ServletContext对象。

  上一篇说了ServletConfig对象,一个web应用中默认只有一个ServletContext对象,可以有多个ServletConfig对象;Config对象的创建时机是Servlet第一次调用的时候,init方法之前创建。

  ServletContext相当于web环境的化身,ServletConfig对象相当于每个sevlet对象的化身。

  我们可以简单想象一下sun公司关于ServletContext的设计:

  1)创建ServletContext对象      ServletContext  context = new ServletContext()
  2)创建ServletConfig对象 ServetConfig config = new ServletConfig();
  config.setServletContxt(context);
  class ServletConfig{
    ServletContext context;
    public ServletContext getServletContxt(){
      return contxt;
    }
  }   public void init( ServletConfig config ){
    得到ServletConfig对象
    从ServletConfig对象中得到ServletContext对象
    SerlvetContext context = config.getServletContext();
  }

3,ServletContext对象的获取:

  a,从ServletConfig对象获取

  getServletConfig().getServletContext()

  b,在Servlet中直接获取

  ServletContext context = getServletConfig().getServletContext();

  context = getServletContext();

4,常用的API

  a,获取当前web应用的路径

  getServletContext().getContextPath()

  b,获取web初始化参数

  配置web初始化参数:

  

  

  获取参数:

  getServletContext().getInitParameterNames();//返回枚举类型,参数名列表

  getServletContext().getInitParameter(paraName)//获取具体的参数值

  

  c,作为域对象共享数据使用

  getServletContext().setAttribute("time", "2017.11.11");

  System.out.println(getServletContext().getAttribute("time"));

  getServletContext().removeAttribute("time");

  作为与对象,设置的属性数据,可以在同一个web应用下的其他servlet地方使用。相当于单例共享数据的感觉。

  d,转发

//转发
/**
* 注意:不能转发当前web应用以外的资源。
*/
/*RequestDispatcher rd = this.getServletContext().getRequestDispatcher("/GetDataServlet");
rd.forward(request, response);*/
this.getServletContext().getRequestDispatcher("/GetDateServlet").forward(request, response);

  对比重定向:

//重定向
/**
* 注意:可以跳转到web应用内,或其他web应用,甚至其他外部域名。
*/
//response.sendRedirect("/day09/adv.html");
response.sendRedirect("/day10/GetDataServlet");

  

  e,获取资源路径

   java.lang.String getRealPath(java.lang.String path)     --得到web应用的资源文件

java.io.InputStream getResourceAsStream(java.lang.String path)

  

重点概述:

1,所有域对象

  HttpServletRequet 域对象 

  ServletContext域对象

  HttpSession 域对象

  PageContext域对象

2,转发和重定向

  1)转发

    a)地址栏不会改变

    b)转发只能转发到当前web应用内的资源

    c)可以在转发过程中,可以把数据保存到request域对象中

  2)重定向

    a)地址栏会改变,变成重定向到地址。

    b)重定向可以跳转到当前web应用,或其他web应用,甚至是外部域名网站。

    c)不能再重定向的过程,把数据保存到request中。

  

(16)ServletContext详解的更多相关文章

  1. Java ServletContext 详解

    ServletContext, 是一个全局的储存信息的 空间,服务器开始,其就存在,服务器关闭,其才释放.request,一个用户可有多个:session,一个用户一个:而 servletContex ...

  2. ServletContext详解(转)

    ServletContext,是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放.request,一个用户可有多个:session,一个用户一个:而servletContext,所 ...

  3. Java ServletContext详解

    转载: ServletContext,是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放.request,一个用户可有多个:session,一个用户一个:而servletConte ...

  4. ServletContext详解 以及用法

    ServletContext,是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放.request,一个用户可有多个:session,一个用户一个:而servletContext,所 ...

  5. ServletContext 详解

    ServletContext——它是一个全局的储存信息的空间,服务器开始,其就存在,服务器关闭,其才释放.request,一个用户可有多个:session,一个用户一个:而servletContext ...

  6. MVC 5 + EF6 完整教程16 -- 控制器详解

    Controller作为持久层和展现层的桥梁, 封装了应用程序的逻辑,是MVC中的核心组件之一. 本篇文章我们就来谈谈 Controller, 主要讨论两个方面: Controller运行机制简介 C ...

  7. Jmeter 常用函数(16)- 详解 __split

    如果你想查看更多 Jmeter 常用函数可以在这篇文章找找哦 https://www.cnblogs.com/poloyy/p/13291704.htm 作用 根据分隔符分割传递给它的字符串 语法格式 ...

  8. ServletContext与ServletConfig的详解及区别

    转自http://hi.baidu.com/huaxuelili/item/1704a03dbb5cd7f22784f4c6 一.ServletContext详解ServletContext是serv ...

  9. Servlet、ServletContext与ServletConfig的详解及区别

    Servlet.ServletContext与ServletConfig的详解及区别 一.Servlet详解 Servlet是一个interface,全局限定名:javax.servlet.Servl ...

随机推荐

  1. C++实现顺序栈类求解中缀表达式的计算

    控制台第一行打印的数值为使用形如以下方式得到的结果: cout << +*(+)*/- << endl; 即第一个待求解表达式由C++表达式计算所得结果,以用于与实现得出的结果 ...

  2. 如何根据实体动态生成sql语句

    该文章同时解决了,如何向数据库中添加Null值,以及如何处理“参数化查询未提供参数”的错误.解决方案请看第二段折叠的代码. 背景: 在项目开发的过程中,往往需要根据实体的值来修改sql语句,比如说,有 ...

  3. 72.spring boot讨论群【从零开始学Spring Boot】

    [从零开始学习Spirng Boot-常见异常汇总] 如果您碰到什么问题,您可以加群进行探讨,在群里有加入的都是Spring Boot志同道合的朋友: Spring Boot QQ交流群:193341 ...

  4. 【java基础 3】树形结构数据呈现的递归算法实现

    一.基本概况 在我的项目中,常常会用到树形结构的数据,最为明显的就是左边菜单栏,类似于window folder一样的东西. 而我之前一直是借助前端封装好的ZTree等工具实现展示,而后台则通常使用递 ...

  5. [bzoj1787][Ahoi2008]Meet 紧急集合(lca)

    传送门 可以看出,三个点两两之间的lca会有一对相同,而另一个lca就是聚集点. 然后搞搞就可以求出距离了. ——代码 #include <cstdio> #include <cst ...

  6. c++之析构函数

    #include<iostream>using namespace std;class A{   public:    A(){cout<<"A constructi ...

  7. 移动端:UI图px单位转换rem单位的计算方法

    简单说一下 em em 单位是相对于父元素字体大小来去定的.比方说: font-size:12px; 元素宽度是2em; 那么实际的宽度是 24px.(具体为什么,可以去查询资料,今天主讲rem) 简 ...

  8. 用svn下载github中指定目录的文件

    1.先用命令看看github的分支 svn ls https://github.com/BlueRiverInteractive/robovm-ios-bindings 输出: branches/ t ...

  9. 【BZOJ1225】求正整数(数论)

    题意:对于任意输入的正整数n,请编程求出具有n个不同因子的最小正整数m. n<=50000 思路:记得以前好像看的是maigo的题解 n即为将m分解为质数幂次的乘积后的次数+1之积 经检验只需要 ...

  10. BZOJ1698: [Usaco2007 Feb]Lilypad Pond 荷叶池塘

    一傻逼题调了两天.. n<=30 * m<=30的地图,0表示可以放平台,1表示本来有平台,2表示不能走,3起点4终点,走路方式为象棋的日字,求:从起点走到终点,至少要放多少平台,以及放平 ...