1. ServletConfig是什么?

  • javax.servlet.ServletConfig是一个接口

2. 作为了解,主要是思想

  • Apache Tomcat服务器实现了Servlet规范,专门写了一个ServletConfig接口的实现类,实现类的完整类名:org.apache.catalina.core.StandardWrapperFacade
  • JavaWeb程序员在编程的时候,一直是面向ServletConfig接口去完成调用,不需要关心具体的实现类。webapp放到Tomcat服务器中,ServletConfig的实现类是:org.apache.catalina.core.StandardWrapperFacade
    webapp放到JBOSS服务器中,ServletConfig的实现类可能就是另外一个类名了。这些所有的实现类,我们都不需要关心,只需要学习ServletConfig接口中有哪些可以使用的方法

3. Tomcat服务器是什么?

  • Tomcat服务器是一个实现了Servlet规范和JSP规范的容器

4. ServletConfig接口中有哪些常用的方法?

方法 作用
String getInitParameter(String name) 通过初始化参数name获取value
Enumeration getInitParameterNames() 获取所有初始化参数的name
String getServletName() 获取servletname
ServletContext getServletContext() 获取ServletContext【Servlet上下文】对象

示例代码如下:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
  3. http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet>
  4. <servlet-name>AServletConfig</servlet-name>
  5. <servlet-class>com.glutnn.servlet.AServletConfig</servlet-class>
  6. <init-param>
  7. <param-name>user</param-name>
  8. <param-value>root</param-value>
  9. </init-param>
  10. <init-param>
  11. <param-name>password</param-name>
  12. <param-value>123</param-value>
  13. </init-param>
  14. </servlet>
  15. <servlet-mapping>
  16. <servlet-name>AServletConfig</servlet-name>
  17. <url-pattern>/hello</url-pattern>
  18. </servlet-mapping>
  19. </web-app>
package com.glutnn.servlet;

import javax.servlet.*;
import java.io.IOException;
import java.util.Enumeration;

public class AServletConfig implements Servlet {
    private ServletConfig config;

    @Override
    public void init(ServletConfig config) throws ServletException {
        //将局部变量config赋值给实例变量config
        //目的:在service方法中也可以使用config
        this.config = config;
    }

    //这个方法是供子类使用的,在子类中若想获取ServletConfig,可以调用这个方法
    @Override
    public ServletConfig getServletConfig() {
        return config;
    }

    @Override
    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
        //获取ServletConfig对象,也可以直接使用,因为在init方法初始化已得到该对象
        ServletConfig config = getServletConfig();

        //1、通过初始化参数的name获取value
        String user = config.getInitParameter("user");
        String password = config.getInitParameter("password");
        System.out.println("user="+user+"、"+"password="+password);

        //2、获取所有初始化参数的name
        Enumeration<String> names = config.getInitParameterNames();
        while(names.hasMoreElements()){
            String name = names.nextElement();
            String value = config.getInitParameter(name);
            System.out.println(name+"="+value);
            /*
            * password=123
              user=root
            * */
        }

        //3、获取<servlet-name>servletname</servlet-name>
        String servletName = config.getServletName();
        System.out.println(servletName);//AServletConfig

        //4、获取ServletContext【Servlet上下文】对象
        ServletContext servletContext = config.getServletContext();
        System.out.println(servletContext);//org.apache.catalina.core.ApplicationContextFacade@3db5c195

    }

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

    @Override
    public void destroy() {

    }
}