前言

  前面我介绍了一下什么是servlet,它的生命周期,执行过程和它的原理。这里我们做一个简单的回顾!

  什么是Servlet?

  servlet 是运行在 Web 服务器中的小型 Java 程序(即:服务器端的小应用程序)。servlet 通常通过 HTTP(超文本传输协议)接收和响应来自 Web 客户端的请求。

  执行过程:

    

  生命周期:  

    实例化-->初始化-->服务->销毁
    出生:(实例化-->初始化)第一次访问Servlet就出生(默认情况下)
    活着:(服务)应用活着,servlet就活着
    死亡:(销毁)应用卸载了servlet就销毁。

  如何让servlet在服务器启动时就创建:

    在web.xml中的servlet标签里面配置一个load-on-startup来设置

一、Servlet规范核心类图

  

接下来我们要说的是Servlet的四个类:

  ServletConfig对象,ServletContext对象、request对象,response对象

从图中我们可以知道这几个对象之间的联系!

一、ServletConfig对象

1.1、获取ServletConfig对象

  1)使用初始化方法获得一个ServletConfig对象

    

  2)通过继承父类(GenericServlet)的方法得到一个ServletConfig对象   

  1. ServletConfig config = this.getServletConfig();

1.2、ServletConfig对象作用

    

  1)getServletName();  //获取servlet的名称,也就是我们在web.xml中配置的servlet-name

  2)getServletContext(); //获取ServletContext对象,该对象的作用看下面讲解

  3)getInitParameter(String); //获取在servlet中初始化参数的值。这里注意与全局初始化参数的区分。这个获取的只是在该servlet下的初始化参数

    

  4)getInitParameterNames(); //获取在Servlet中所有初始化参数的名字,也就是key值,可以通过key值,来找到各个初始化参数的value值。注意返回的是枚举类型

    

    在Servlet类中

    

    结果

    

  注意:在上面我们所分析的源码过程中,我们就知道,其实可以不用先获得ServletConfig,然后在获取其各种参数,可以直接使用其方法,比如上面我们用的ServletConfig().getServletName();

      可以直接写成getServletName();而不用在先获取ServletConfig();了,原因就是在GenericServlet中,已经帮我们获取了这些数据,我们只需要直接拿就行。   

  1.   String value = this.getInitParameter("wolf"); 

二、ServletContext

2.1、获取ServletContext对象

  1)getServletContext();

  2)getServletConfig().getServletContext();

  这两种获取方式的区别就跟上面的解释一样,第一种是直接拿,在GenericServlet中已经帮我们用getServletConfig().getServletContext();拿到了ServletContext。

  我们只需要直接获取就行了,第二种就相当于我们自己在获取一遍,两种读是一样的。

2.2、ServletContext对象作用

  tomcat为每个web项目都创建一个ServletContext实例,tomcat在启动时创建,服务器关闭时销毁,在一个web项目中共享数据,管理web项目资源,

  为整个web配置公共信息等,通俗点讲,就是一个web项目,就存在一个ServletContext实例,每个Servlet读可以访问到它。

  1)web项目中共享数据

    在一定范围内(当前应用),使多个Servlet共享数据

    getAttribute(String name)、setAttribute(String name, Object obj)、removeAttribute(String name)

    

    1.1)setAttribute(String name, Object obj) 在web项目范围内存放内容,以便让在web项目中所有的servlet读能访问到

    1.2)getAttribute(String name) 通过指定名称获得内容

    1.3)removeAttribute(String name) 通过指定名称移除内容

    实例:

      我们在Servlet_demo_0010中写:      

  1.       this.getServletContext().setAttribute("bang", "adc");

      然后我们在Servlet_demo_0020中看能不能获取到:

      

      结果:

        得到了adc

  2)获取全局配置信息

    整个web项目初始化参数 (这个就是全局初始化参数,每个Servlet中都能获取到该初始化值)

    2.1)getInitPatameter(String name)  //通过指定名称获取初始化值

    2.2)getInitParameterNames()  //获得枚举类型

    web.xml 配置 整个web项目的初始化

    

    

    结果:

      

  3)获取web项目资源

    3.1)获取web项目下指定资源的路径:getServletContext().getRealPath("/WEB-INF/web.xml")

      String  getRealPath(String path);//根据资源名称得到资源的绝对路径

      

      结果:

        

      应用:

        

        

    3.2)获取web项目下指定资源的内容,返回的是字节输入流。InputStream getResourceAsStream(java.lang.String path)

      

      结果的一部分:

        

    3.3)getResourcePaths(java.lang.String path)  指定路径下的所有内容。

      

      结果:

        

    3.4)实现servlet的转发

       RequestDispatcher  getRequestDispatcher(String path) ;//参数表示要跳转到哪去

      

JavaWeb(一)Servlet中的ServletConfig与ServletContext的更多相关文章

  1. Servlet第二篇【Servlet调用图、Servlet细节、ServletConfig、ServletContext】

    Servlet的调用图 前面我们已经学过了Servlet的生命周期了,我们根据Servlet的生命周期画出Servlet的调用图加深理解 Servlet的细节 一个已经注册的Servlet可以被多次映 ...

  2. day05 Servlet 开发和 ServletConfig 与 ServletContext 对象

    day05 Servlet 开发和 ServletConfig 与 ServletContext 对象 1. Servlet 开发入门 - hello world 2. Servlet 的调用过程和生 ...

  3. Servlet学习笔记(二)之Servlet路径映射配置、Servlet接口、ServletConfig、ServletContext

    Servlet路径映射配置 要使Servlet对象正常的运行,需要进行适当的配置,以告诉Web容器哪个请求调用哪个Servlet对象处理,对Servlet起到一个注册的作用.Servlet的配置信息包 ...

  4. JavaWeb之Servlet中ServletConfig和ServletContext

    [声明] 欢迎转载,但请保留文章原始出处→_→ 文章来源:http://www.cnblogs.com/smyhvae/p/4140877.html [正文] 一.ServletConfig:代表当前 ...

  5. Servlet入门和ServletConfig、ServletContext

    Servlet是一门用于开发动态web资源的技术. 若想开发一个动态web资源,需要完成以下2个步骤: 1)编写一个Java类,实现servlet接口: 2)把开发好的Java类部署到web服务器中. ...

  6. JavaEE:Servlet简介及ServletConfig、ServletContext

    Servlet简介 1.Servlet是sun公司提供的一门用于开发动态web资源的技术*静态web资源:固定数据文件*动态web资源:通过程序动态生成数据文件2.Servlet技术基于Request ...

  7. JavaWeb(一)-Servlet中的Config和Context

    一.ServletConfig对象 1.1获取一个servletConfig对象 1)通过初始化方法获得一个servletconfig 2)通过继承父类(GenericServlet.)得到一个ser ...

  8. servlet中的ServletConfig对象

    ServletConfig对象对应web.xml文件中的<servlet>节点.当Tomcat初始化一个Servlet时,会创建ServletConfig对象,并将该Servlet的配置信 ...

  9. [原创]java WEB学习笔记05:Servlet中的ServletConfig对象

    本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当 ...

随机推荐

  1. python3 安装及项目管理安装

    python3 一.下载安装 地址:https://www.python.org/downloads/ 安装:傻瓜式安装:我的目录如下 二.环境配置 [右键计算机]-->[属性]-->[高 ...

  2. [js高手之路]深入浅出webpack教程系列8-(postcss-loader,autoprefixer,html-loader,less-loader,ejs-loader)用法

    我们接着上文,那么在上篇文章的最后,写到了css-loader的用法,如果你用心发现,就能看到我在style.css样式文件中写了一个这样的样式: div { transition: all ease ...

  3. linux模拟实现主机跨路由通信

    p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; text-align: justify; f ...

  4. JUnit之TestCase和TestSuite详解

    首先介绍下TestCase以及TestSuite.    TestCase:字面意思,测试用例.为一个或多个方法提供测试方法.一般是一个test    TestSuite:测试集合,即一组测试.一个t ...

  5. Beta阶段事后诸葛亮分析

    1.总结的提纲内容 a. 项目管理之事后诸葛亮会 设想和目标 1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件主要解决用户无意识花钱,无法清楚看见钱去 ...

  6. 团队作业4——第一次项目冲刺(Alpha版本) 3

    一.Daily Scrum Meeting照片 二.燃尽图 注:由于前两天燃尽图制作不准确,所以重新制作一个,现已由工作量改为功能数,工作日从今天开始. 三.项目进展 功能: 算法这一块已全部完成 文 ...

  7. 201521123087 《java程序设计》 第七周学习总结

    1. 本周学习总结 2. 书面作业 ArrayList代码分析1.1 解释ArrayList的contains源代码                                           ...

  8. 201521123047 《Java程序设计》第4周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 1.2 使用常规方法总结其他上课内容. 答: - 只能有一个父类,即单继承,子类继承父类的全部成员(属性和方法),并可能有自己特有的 ...

  9. 201521123032 《Java程序设计》第1周学习总结

    #1. 本周学习总结 下载熟悉eclipse,了解java的入门.用notepad++和eclipse编写Java程序.复习到了十进制转化为二进制,八进制与十六进制. #2. 书面作业 ##2.1为什 ...

  10. 201521123055 《Java程序设计》第11周学习总结

    1. 本章学习总结 2. 书面作业 Q1.互斥访问与同步访问 ** 完成题集4-4(互斥访问)与4-5(同步访问) ** 1.1 除了使用synchronized修饰方法实现互斥同步访问,还有什么办法 ...