JavaWeb入门(四)- Servlet的关联类ServletConfig与ServletContext详解(中)

文章目录

        • 1. 前言
        • 2. Servlet的关联类
          • 2.1 ServletConfig
            • 2.1.1 添加Servlet的初始化信息
            • 2.1.2 ServletConfig的常用接口函数
          • 2.2 ServletContext
            • 2.2.1添加web应用程序的初始化参数
            • 2.2.2 ServletContext常用接口函数参数
            • 2.2.3context-param标签 与 init-param标签的异同
        • 3.总结

1. 前言

在上一篇文章中,介绍了如何开发并部署一个Servlet。本文主要是分析Servlet中的一些方法及关联类。Servlet的方法有:init(),Service()和destory()。Servlet的核心类图如下所示:
JavaWeb入门(四)- Servlet的关联类ServletConfig与ServletContext详解(中)_第1张图片

2. Servlet的关联类

通过分析源码可知,Servlet的init函数的代码如下:

Servlet接口代码 ServletConfig代码
JavaWeb入门(四)- Servlet的关联类ServletConfig与ServletContext详解(中)_第2张图片 JavaWeb入门(四)- Servlet的关联类ServletConfig与ServletContext详解(中)_第3张图片

在进行初始化的时候,使用了ServletConfig类,而ServletConfig 类中,又包含了ServletContext。所以,本节主要介绍这两个类的含义及用途。

2.1 ServletConfig

Servlet引擎将Servlet的配置参数信息一并封装到一个称为ServletConfig的对象中,并在初始化Servlet实例对象时传递给该Servlet。ServletConfig封装了Servlet的配置信息,并且可以获取ServletContext对象。在具体开发中,可以通过web.xml文件中,标签下的来设置Servlet的初始化信息。

2.1.1 添加Servlet的初始化信息

使用在web.xml文件中配置如下:

1.   
2.     MainServlet  
3.     com.wes.controller.MainServlet  
4.       
5.        param1  
6.        avalible in servlet init()  
7.       
8.     0  
9.  

从代码中获取参数的代码为:

public class HelloServlet implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        System.out.println("init");
        String user = servletConfig.getInitParameter("user");
        System.out.println(user);
    }
}
2.1.2 ServletConfig的常用接口函数

ServletConfig接口则用于定义ServletConfig对象需要对外提供的方法,以便在Servlet程序中可以调用这些方法来获取有关信息。常用的方法有:

  • getInitParameterNames
  • getInitParameter
  • getServletName
  • getServletContext

Servlet引擎调用Servlet的实例对象的init(ServletConfig config)方法将ServletConfig对象传递给Servlet。Servlet.getServletConfig()方法必须返回init(ServletConfig config)方法传递进来的这个ServletConfig对象的引用。

2.2 ServletContext

Servlet在有些情况下可能需要访问Servlet容器或借助Servlet容器访问外部的资源,所以,Serlvet引擎需要将表示Servlet容器的对象传递给Servlet,这个类就是ServletContext。

Servlet引擎为每个WEB应用程序都创建一个对应的ServletContext对象,ServletContext对象被包含在ServletConfig对象中,调用ServletConfig.getServletContext方法可以返回ServletContext对象的引用。

由于一个WEB应用程序中的所有Servlet都共享同一个ServletContext对象,所以,ServletContext对象被称之为 application 对象(Web应用程序对象)。

2.2.1添加web应用程序的初始化参数

在web.xml文件的根元素中增加子元素,可以添加对web程序的初始化参数。常见的web程序初始化参数包括数据库引擎数据库地址等。代码如下所示:


    
        driver
        com.mysql.jdbc.Driver
    
    
        jdbcurl
        jdbc:mysql:///
    

从代码中获取参数的代码为

    ServletContext context = servletConfig.getServletContext();
    String driver = context.getInitParameter("driver");
    System.out.println(driver);
2.2.2 ServletContext常用接口函数参数
  • getInitParameterNames
  • getInitParameter
  • getRealPath(String path)

ServletContext.getInitParameterNames方法:用于返回一个包含WEB应用程序的所有初始化参数名称的Enumeration集合对象.
ServletContext.getInitParameter方法:用于返回某个指定名称的初始化参数值。
getRealPath(String path) 方法: 用于返回某个虚拟路径所映射的本地文件系统路径

2.2.3context-param标签 与 init-param标签的异同

标签下的context-param来配置信息,是webApp中的配置信息,能够给该应用中所有的Servlet用。

而init-param所配置的信息,是给init-param所属标签下的Servlet用。

从作用域的范围来看,前者是全局变量,后者是局部变量。

3.总结

本文从Servlet的核心类图出发,分析了与之相关的两个关联类ServletConfig和ServletContext。并介绍了相关用法和方法。并比较了两者的异同。

你可能感兴趣的:(JavaWeb)