ServletConfig对象

下图为实现了Servlet接口的一个Servlet实现类,里面有该类默认的方法。参与Servlet生命周期的方法有:init方法、service方法、destroy方法

本文讲的是init方法的参数:ServletConfig对象

1.ServletConfig对象是什么

  ServletConfig对象是Servlet对象的配置信息,是servlet对象的初始化参数。这些配置信息是通过<init-param>标签在web.xml中配置的。

<servlet>
    <servlet-name></servlet-name>
    <servlet-class></servlet-class>
    <init-param>
        <param-name>name</param-name>
        <param-value>gacl</param-value>
    </init-param>
    <init-param>
        <param-name>password</param-name>
        <param-value>123</param-value>
     </init-param>
  <init-param>
        <param-name>charset</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
    <load-on-startup></load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name></servlet-name>
    <url-pattern></url-pattern>
</servlet-mapping>    

  当web容器在创建Servlet实例对象时,会自动将这些初始化参数封装到ServletConfig对象中,并在调用Servlet的init方法时,将ServletConfig对象传递给Servlet。进而,我们通过ServletConfig对象就可以得到当前Servlet的初始化参数信息。

 2.如何在service方法中使用ServletConfig对象

  1)定义实例变量ServletConfig config

  2)在init方法中将局部变量赋值给实例变量

3.如何在子类中使用ServletConfig对象

  实现getServletConfig方法,在子类中调用此方法

import java.io.IOException;
import java.util.Enumeration;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class DefaultServletMethods implements Servlet {

    /**
     * 定义ServletConfig对象来接收配置的初始化参数
     */
    private ServletConfig config;

    @Override
    public void destroy() {
    }

    @Override
    public ServletConfig getServletConfig() {
        return config;//返回实例变量
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void init(ServletConfig arg0) throws ServletException {
        this.config = arg0;
    }

    @Override
    public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
        // 获取在web.xml中配置的初始化参数
        // 1.获取指定的初始化参数
        String paramVal = this.config.getInitParameter("name");
        // 2.获取所有的初始化参数
        Enumeration<String> e = config.getInitParameterNames();
        while (e.hasMoreElements()) {
            String name = e.nextElement();
            String value = config.getInitParameter(name);
        }
    }
}

4.Servlet和ServletConfig的关系

  一个Servlet对象会对应一个ServletConfig对象

5.ServletConfig对象中有哪些方法

   ServletConfig对象一共有4个方法

  1)String getInitParameter("name"):通过初始化参数的name获取value值

  2)Enumeration<String> getInitParameterNames():获取所有初始化参数的name

  3)String getServletName():获取Servlet对的名字<servlet-name>名字</servlet-name>

  4)ServletContext getServletContext():通过ServletConfig对象获取ServletContext对象

原文地址:https://www.cnblogs.com/luna-hehe/p/14505401.html