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() | 获取 |
| ServletContext getServletContext() | 获取ServletContext【Servlet上下文】对象 |
示例代码如下:
<?xml version="1.0" encoding="UTF-8"?><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/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet><servlet-name>AServletConfig</servlet-name><servlet-class>com.glutnn.servlet.AServletConfig</servlet-class><init-param><param-name>user</param-name><param-value>root</param-value></init-param><init-param><param-name>password</param-name><param-value>123</param-value></init-param></servlet><servlet-mapping><servlet-name>AServletConfig</servlet-name><url-pattern>/hello</url-pattern></servlet-mapping></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() {
}
}
