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. python基础——7(函数)

    一.函数的定义(函数一定是先定义,后引用) 函数是完成特定功能的代码块. def:声明函数的关键字 fun:函数变量名 ():参数列表,参数可以是0-n个,但是()不能丢 函数体:实现功能的具体代码 ...

  2. 关于对象字面量花括号{} key的类型

    原来对{}方式建立的实例化后的对象的key,理解不清,只知道,数组加不加“”,反正都是字符,现在要理解下,到底怎么回事?返回结果是 var a={}; a[1]="a"; a[&q ...

  3. STM32F407 NVIC 中断优先级管理 个人笔记

    内嵌向量中断控制器:Nested Vectored Interrupt Controller (NVIC) 设置中断向量的优先级并使能. 响应优先级& 抢占优先级 抢占优先级:一个中断A还在处 ...

  4. FZU 1686 dlx重复覆盖

    #include <iostream> #include <cstring> #include <cstdio> #include <algorithm> ...

  5. POJ 1523 网络连通

    题目大意: 给你一个网络组,每台机子与其他机子的关系,让你找到所有的割点,如果没有割点,输出无 这道题目就是最直接的求割点问题,我在这里用的是邻接矩阵来存储机子之间的关系 割点问题的求解需要对深度优先 ...

  6. 【DFS+剪枝】Square

    https://www.bnuoj.com/v3/contest_show.php?cid=9154#problem/J [题意] 给定n个木棍,问这些木棍能否围成一个正方形 [Accepted] # ...

  7. react.js 高阶组件----很简单的实例理解高阶组件思想

    调试代码之前,我设置了两个缓存 分别是username和content 在控制台console设置两个缓存代码 localStorage.setItem('username','老王')localSt ...

  8. HDU 3527 SPY

    http://poj.org/problem?id=3615 基础题 狂STL #include <bits/stdc++.h> using namespace std; set<s ...

  9. Java设计模式之(工厂模式)

    工厂模式: 工厂模式可以分为三类: 1)简单工厂模式(Simple Factory) 2)工厂方法模式(Factory Method) 3)抽象工厂模式(Abstract Factory) 简单工厂模 ...

  10. js编程习惯

    1. JS代码中,相同的代码使用成员变量定义. 2. JS中对空值的判断,如if(str == null || str == undefined || str == ‘’){  XXX  } 可以直接 ...