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 个方法
- 公共抽象Java.lang.String getServletName()
- 公共抽象 javax.servlet.ServletContext getServletContext()
- 公共抽象Java.lang.String getInitParameter(Java.lang.String)
- 公共抽象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();
}
}
在
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()
此方法将返回具有所有初始化参数名称的枚举。