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. CentOS 6.5 x64 安装Tomcat8 并配置两个Tomcat8

    1.首先,安装tomcat的前提是已经配置好jdk环境变量,若没配好可以参考我的上一篇博文:CentOS 6.5 x64安装jdk8,当然也可以通过网络搜索安装步骤~~ 2.下载: 可以通过官网下载: ...

  2. 利用nginx设置浏览器协商缓存

    强缓存与协商缓存的区别 强缓存:浏览器不与服务端协商直接取浏览器缓存 协商缓存:浏览器会先向服务器确认资源的有效性后才决定是从缓存中取资源还是重新获取资源 协商缓存运作原理 现在有一个这样的业务情景: ...

  3. Java学习之流Stream理解(一)

    缓存可以说是I/O的一种性能优化.缓存流为I/O流增加了内存缓冲区.有了缓冲区,使得在流上执行skip().mark()和reset()方法都称为可能. 1.BufferedInputStream 类 ...

  4. Python接口测试之moco

    在现在的软件开发过程中,特别是app的部分,需要的很多数据以及内容,都是来自server端的API,但是不能保证 在客户端开发的时候,api在server端已经开发完成,专门等着前端来调用,理想的情况 ...

  5. NYOJ-613//HDU-1176-免费馅饼,数字三角形的兄弟~~

    免费馅饼 时间限制:1000 ms  |  内存限制:65535 KB 难度:3 描述 都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼.说来gameboy的人 ...

  6. 【概率dp】D. Card Collector

    https://www.bnuoj.com/v3/contest_show.php?cid=9147#problem/D [题意] 为了集齐n张卡片,必须要买多少袋零食?题目给定每种卡片出现在零食中的 ...

  7. idea与eclipse项目相互导入的过程

    idea项目导出到桌面 很简单,直接去项目所在目录考出即可,但是考出的项目往往都特别大,这是因为考出之前  我们不要忘记把idea的输出目录删除 每次启动服务器运行idea项目的时候  都会有一个输出 ...

  8. POJ 1144 割点

    题意 :求割点的数量 #include<iostream> #include<stdio.h> #include<vector> #include<strin ...

  9. 原生js操作dom的方法

    今天学习了原生js的dom节点的操作,就记录下来,仅供自己以后参考. 1)创建节点:除了可以使用createElement创建元素,也可以使用createTextNode创建文本节点. documen ...

  10. IDEA添加作者注释

    1.打开IDEA的settings,然后在Editor下找到File and Code Templates 2.然后选择File Header 选择需要注释的的格式即可.