1、javax.servlet.ServletConfig是接口
2、Apache Tomcat服务器实现了Servlet规范,所以Tomcat服务器专门写了一个ServletConfig接口的实现类,
实现类的完整类名: org.apache.catalina.core.StandardWrapperFacade
[作为了解,主要是思想]
3、javaweb程员在编程的时候,一直是面向ServletConfig接口去完成调用,不需要关系具体的实现类。
webapp放到Tomcat服务器中,ServletConfig的实现类是:org.apache.catalina.core.StandardWrapperFacade
webapp放到JBOSS服务器中,ServletConfig的实现类可能是另外一个类名了。
这些所有的实现类,我们都不需要关心,只需要学习ServletConfig接口中有哪些可以使用的方法。
4、Tomcat服务器是一个实现了Servlet规范和JSP规范的容器。
5、ServletConfig接口中有哪些常用的方法?
单个获取初始化参数的name
先看第7点
例子:通过初始化参数的name获取value
web.xml:
<servlet>
<!--初始化参数:被封装到ServletConfig对象中了-->
<init-param>
<param-name>driver</param-name>
<param-value>com.mysql.jdbc.Driver</param-value>
</init-param>
<init-param>
<param-name>url</param-name>
<param-value>jdbc:mysql://localhost:3366/bjpowernode</param-value>
</init-param>
<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>
service()方法:
public void service(ServletRequest req,ServletResponse res) throws ServletException,IOException {
//获取ServletConfig对象
ServletConfig config = getServletConfig(); //当然也可以直接获取
//通过初始化参数的name获取vlaue
String driver = config.getInitParameter("driver");
String url = config.getInitParameter("url");
String user = config.getInitParameter("user");
String password = config.getInitParameter("password");
//打印到浏览器
res.setContentType("text/html;charset=UTF-8");
PrintWriter out = res.getWriter();
out.print(driver);
out.print("<br>");
out.print(url);
out.print("<br>");
out.print(user);
out.print("<br>");
out.print(password);
}
批量获取初始化参数的name,存到集合中
Enumeration是一个集合
例子:通过批量的初始化参数name获取批量value
service()方法:
public void service(ServletRequest req,ServletResponse res) throws ServletException,IOException {
//获取ServletConfig对象
ServletConfig config = getServletConfig();
//获取所有初始化参数的name
Enumeration<String> names = config.getInitParameterNames() ;
whi1e(names.hasMoreElements()) {
String name = names.nextElement();
String value = config.getInitParameter(name);
out.print(name + "=” + value);
out.print("<br>");
}
}
获取<servlet-name>servletname</servlet-name>
获取 ServletContext [Servlet上下文]
对象
6、ServletConfig到底是什么?
ServletConfig是一个Servlet对象的配置信息对象,ServletConfig对象中封装了一个Servlet对象的配置信息。
Servlet对象的配置信息在web.xml文件的标签中,里面可以设置很多Servlet对象的初始化信息。
web容器会根据web.xml的配置信息生成一个与Servlet对象对应的ServletConfig对象,这个对象就可以操作Servlet对象的初始化信息。
一个Servlet对象对应一个ServletConfig对象,100个Servlet对象对应100个ServletConfig对象,100个servlet对象,web.xml文件中自然有100对标签。
7、将init方法上的ServletConfig参数移动到service方法中,因为我们程序员主要编写的方法是service方法,在service方法中我们可能需要使用Servlet对象的配置信息,也就是ServletConfig对象! ! !
可以在init方法中完成:局部变童config斌值给实例变童config
Java提供getServ1etConfig方法,提供公开的get方法,其目的是供其他类使用ServletConfig对象
例子:
public class Aservlet implements Servlet {
private ServletConfig config; //成员(实例)变量
public void init(ServletConfig config) throws ServletException {
this.config = config; //局部变量赋值给成员变量
}
//service(),destory(),getServletInfo()略
public ServletConfig getServletConfig() {
return config; //返回ServletConfig对象
}
}