前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaWeb(一)Servlet中的ServletConfig与ServletContext

JavaWeb(一)Servlet中的ServletConfig与ServletContext

作者头像
用户1195962
发布2018-01-18 16:13:25
8840
发布2018-01-18 16:13:25
举报
文章被收录于专栏:LanceToBigDataLanceToBigData

前言

  前面我介绍了一下什么是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对象   

代码语言:javascript
复制
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中,已经帮我们获取了这些数据,我们只需要直接拿就行。   

代码语言:javascript
复制
  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中写:      

代码语言:javascript
复制
      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) ;//参数表示要跳转到哪去

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-10-05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、Servlet规范核心类图
  • 一、ServletConfig对象
    • 1.1、获取ServletConfig对象
      • 1.2、ServletConfig对象作用
      • 二、ServletContext
        • 2.1、获取ServletContext对象
          • 2.2、ServletContext对象作用
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档