📜  Servlet 中的 ServletConfig

📅  最后修改于: 2022-05-13 01:55:49.034000             🧑  作者: Mango

Servlet 中的 ServletConfig

javax.servlet.ServletConfig是作为 servlet API 一部分的接口。对于我们应用程序中的每个 Servlet 类,Web 容器将创建一个 ServletConfig 对象,并且 Web 容器会将这个对象作为参数传递给我们的 Servlet 类对象的public void init(ServletConfig config)方法。 ServletConfig 的一些重要点是:

  • ServletConfig 是一个对象,包含一些初始参数或配置信息,由 Servlet Container 创建并在初始化时传递给 servlet。
  • ServletConfig 用于特定的 servlet,这意味着应该将特定于 servlet 的信息存储在 web.xml 中并使用此对象检索它们。

例子

假设,一个人正在建立一个工作门户,并希望与招聘人员和求职者共享不同的电子邮件 ID(可能会随着时间的推移而改变)。因此,他决定编写两个 servlet,一个用于处理招聘人员的请求,另一个用于处理求职者。

在哪里存储电子邮件 ID?

将 email-id 作为不同 servlet 的名称-值对放在 web.xml 中,可以在 servlet 中使用 getServletConfig().getInitParameter(“name”) 进一步检索。

ServletConfig 接口中的方法

ServletConfig 接口中有 4 个方法

  1. 公共抽象Java.lang.String getServletName()
  2. 公共抽象 javax.servlet.ServletContext getServletContext()
  3. 公共抽象Java.lang.String getInitParameter(Java.lang.String)
  4. 公共抽象Java.util.Enumeration< Java.lang.String> getInitParameterNames()

1. public abstract Java.lang.String getServletName()

在 web.xml 中配置 Servlet 时,我们必须为我们的 servlet 提供一个逻辑名称。假设我们有一个 Servlet 类 TestServlet,我们想在web.xml中配置它。

XML

    
        Test
        TestServlet
    
  
    
        Test
        /test
    


XML

   
       Test
       TestServlet
       
           username
           xyz
       
 
           password
           welcome@123
       
   
  
   
       Test
       /test
   


Java
import javax.servlet.Servlet;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.ServletConfig;
  
public class TestServlet implements Servlet{
    private ServletConfig config;
     // web container will call this 
       // method by passing ServletConfig 
    public void init(ServletConfig config){
        this.config=config;
    }
  
    public void service(ServletRequest request, ServletResponse response){
        // pass  to get 
        String username=config.getInitParameter("username"); // xyz
        String password=config.getInitParameter("password"); // welcome@123
        System.out.println(username);
        System.out.println(password);
  
    }
  
    public void destroy(){
  
    }
  
    public ServletConfig getServletConfig(){
        return config;
    }
  
    public String getServletInfo(){
        return this.getClass().getName();
    }
  
}


中,我们为 TestServlet 类提供了一个逻辑名称。因此,如果我们使用 getServletName() 方法,它将返回 Servlet 的逻辑名称,在这种情况下,它将返回“Test”

2. public abstract javax.servlet.ServletContext getServletContext()

此方法将简单地返回 ServletContext 对象。 Web 容器为每个 Web 应用程序创建一个 ServletContext 对象。

3. public abstract Java.lang.String getInitParameter(Java.lang.String)

我们可以将初始化参数存储为 web.xml 的一部分

XML


   
       Test
       TestServlet
       
           username
           xyz
       
 
           password
           welcome@123
       
   
  
   
       Test
       /test
   

使用初始化参数的好处是我们不需要在源代码中硬编码值,如果我们不是在源代码中硬编码值,我们不需要接触源代码来改变值。我们只需要更改 web.xml 中的值并重新部署应用程序。这些初始化参数特定于您为其配置它们的 Servlet。通过使用 getInitParameter(),我们可以访问 Servlet 中的 init 参数的值。

Java

import javax.servlet.Servlet;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.ServletConfig;
  
public class TestServlet implements Servlet{
    private ServletConfig config;
     // web container will call this 
       // method by passing ServletConfig 
    public void init(ServletConfig config){
        this.config=config;
    }
  
    public void service(ServletRequest request, ServletResponse response){
        // pass  to get 
        String username=config.getInitParameter("username"); // xyz
        String password=config.getInitParameter("password"); // welcome@123
        System.out.println(username);
        System.out.println(password);
  
    }
  
    public void destroy(){
  
    }
  
    public ServletConfig getServletConfig(){
        return config;
    }
  
    public String getServletInfo(){
        return this.getClass().getName();
    }
  
}

4. public abstract Java.util.Enumeration< Java.lang.String> getInitParameterNames()

此方法将返回具有所有初始化参数名称的枚举。