ServletConfig和ServletContext详解

ServletConfig接口

一、ServletConfig介绍

  1. 概述:ServletConfig是Servlet的配置参数对象,在Servlet的规范中,允许为每一个Servlet都提供一些初始化的配置,所以每一个Servlet都有一个ServletConfig。
  2. 作用: 当Servlet容器初始化Servlet时,Servlet容器会给Servlet的init()方法传入一个ServletConfig对象,即传入一些配置信息给Servlet。
  3. 生命周期: 应用一加载则创建,应用停止则被销毁;
  4. 创建时间: 创建完Servlet对象时,接着创建。Servletconfig对象

二、ServletConfig常用方法

在这里插入图片描述

三、ServletConfig的配置方式

  • 在<servlet>标签种,通过<init-param>标签来配置。有两个子标签:
      1. <param-name>:代表初始化参数的key。
      2. <param-value>: 代表初始化参数的value。
    在这里插入图片描述
    注意: 这里配置的参数,只作为演示用,无实际意义。

四、ServletConfig实现步骤(练习)

  1. 定义一个类,继承HttpServlet。
  2. 重写doGet()和doPost()方法。
  3. 在web.xml进行配置。
  4. 在请求方法中通过请求对象获取到ServletConfig对象。
  5. 然后再通过getInitParameter()方法获取到配置的初始化参数。
  6. 部署并启动项目。
  7. 通过浏览器测试。

ServletContext对象

一、ServletConText介绍

  • 概述:ServletContext对象是一个应用上下文对象,也是一个域对象。表示Servlet应用程序,每个web应用程序都只有一个ServletContext对象。

  • ServletContext对象的作用:
    (1). 有了ServletContext对象,就可以共享从应用程序中的所有资源访问到的数据信息,并且可以动态注册web对象。
    (2).可以获得应用域的全局初始化参数,以及达到Servlet之间的数据共享
    (3).可以作为域对象在整个应用中共享数据;域对象即在一定的作用范围内实现资源共享;
    (4).可以用来获取应用中的资源在服务器上的绝对路径;
    (5).获取文件的mime类型: 在网络传输中,并不是以扩展名来区分文件的类型,都是以mime类型;如:text/html;表示一个html文件。

  • 生命周期: 应用一加载则创建,应用被停止则销毁

  • 创建时间: 加载web应用时,创建ServletContext对象。

二、域对象

  •   域对象指的是对象有作用域,即有作用范围。域对象可以实现数据的共享,不同作用范围对象,共享数据的范围能力也不同。
  •   在Servlet规范中,一共有4个域对象。其他三个是:request请求域PageContext页面域session会话域。ServletContext就是其中的一个。是web应用中最大的作用域,也叫application应用域,可以实现整个应用之间的数据共享!

三、ServletContext配置方式

  •   ServletContext不像ServletConfig接口在Servlet标签里配置,而是针对于整个应用的配置,也叫全局的初始化参数;
  •   在<web-APP>标签中,通过<context-param>标签来配置,有两个子标签:
      1. <param-name>: 代表全局初始化参数的key。
      2.<param-value>: 代表全局初始化参数的value。
    在这里插入图片描述

四、ServletContext常用方法

在这里插入图片描述

 //获取当前项目的虚拟目录
        System.out.println("当前虚拟目录:"+servletContext.getContextPath());
        //获取服务器信息
        System.out.println("服务器和版本信息:"+servletContext.getServerInfo());
        //获取浏览器访问路径的绝对路径
        System.out.println("虚拟目录所在的绝对路径"+
                servletContext.getRealPath(servletContext.getContextPath()));
        //向域中存数据
        servletContext.setAttribute("name","迪丽热巴");
        //获取统一资源标识符:虚拟路径/资源访问路径
        System.out.println("获取统一资源标识符:"+req.getRequestURI());
        //获取统一资源定位符: 浏览器的访问地址
        System.out.println("获取统一资源定位符:"+req.getRequestURL());
        System.out.println("获取虚拟目录:"+req.getContextPath());
        System.out.println("获取Servlet映射路径:"+req.getServletPath());
        System.out.println("获取访问者ip地址:"+req.getRemoteAddr());
        System.out.println("获取请求的消息数据:"+req.getQueryString());

注意:
存放文件的三个路径:

  1. Src下: 代码 src下的文件,存在于web/Web-INF/classes/
  2. web下: 静态页面 /
  3. Web-INF下: 配置文件 /web/Web-INF/

五、ServletContext实现步骤

在这里插入图片描述

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值