-
javax.servlet.ServleConfig是个接口
-
Apache Tomcat服务器实现了Servlet规范,Tomcat服务器专门写了一个ServletConfig接口的实现类
-
javaweb程序员一直面向接口去调用,不需要去关心具体的实现类,只需要去学习ServletConfig接口中有哪些接口可以使用
-
Tomcat服务器就是一个实现了Servlet规范和JSP规范的容器
-
ServletConfig到底是什么?
ServletConfig是一个Servlet对象的配置信息对象,ServletConfig对象中封装了一个Servlet对选哪个的配置信息,Servlet对象的配置信息在web.xml文件中,一个Servlet 对象对应一个ServletConfig对象 -
如何将init方法上的ServletConfig参数移动到service方法中,因为在service方法中可能需要ServletConfig?
在init方法汇总完成:将局部变量servletConfig赋值给实例变量config
实现getServletConfig方法,提供公开的get方法是供子类使用 -
ServletConfig接口中有哪些常用的方法?
通过初始化参数的name获取value:String getInitParameter(String name)
获取所有初始化参数的name:Enumeration getInitParameterNames()
获取servlet-name:String get ServletName()
获取ServletContext对象:ServletContext getServletContext()
html文件
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<a href="/24_Servlet/testLifeCycle">测试Servlet对象的生命周期</a>
</body>
</html>
web.xml文件
<?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/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>a</servlet-name>
<servlet-class>ServletConfig.AServlet</servlet-class>
<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>
<servlet-mapping>
<servlet-name>a</servlet-name>
<url-pattern>/a</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>b</servlet-name>
<servlet-class>ServletConfig.BServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>b</servlet-name>
<url-pattern>/b</url-pattern>
</servlet-mapping>
</web-app>
package ServletConfig;
import javax.servlet.*;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
public class AServlet implements Servlet {
//实例变量
private ServletConfig config;
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("AServlet="+servletConfig.toString());
//将局部变量servletConfig赋值给实例变量config
//目的:在service方法中可以使用config对象
this.config=servletConfig;
}
//这个方法供子类使用,在子类中想获取ServletConfig,可以调用这个方法
@Override
public ServletConfig getServletConfig() {
return config;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
//获取ServletConfig
ServletConfig config = getServletConfig();
servletResponse.setContentType("text/html;charset=UTF-8");
PrintWriter out = servletResponse.getWriter();
//通过初始化参数的name获取value
/*
String driver = config.getInitParameter("driver");
String url = config.getInitParameter("url");
String user = config.getInitParameter("user");
String password = config.getInitParameter("password");
out.print(driver);
out.print("<br>");
out.print(url);
out.print("<br>");
out.print(user);
out.print("<br>");
out.print(password);
*/
/*
//获取所有初始化参数
Enumeration<String> names = config.getInitParameterNames();
while(names.hasMoreElements()){
String name = names.nextElement();
String value = config.getInitParameter(name);
out.print(name+"="+value);
out.print("<br>");
}
*/
String servletName = config.getServletName();
out.print("<servlet-name>"+servletName+"<servlet-name>");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}