ServletConfig 类,见名知意,就是 Servlet 程序的配置信息类。mysql
Servlet 程序和 ServletConfig 对象都是由 Tomcat 负责建立,供咱们使用的。sql
Servlet 程序默认是第一次访问的时候建立,ServletConfig 是每一个 Servlet 程序建立时,就建立一个与之对应的 ServletConfig 对象。服务器
ServletConfig 这个类中声明了四个方法,能够看到这四个方法都是与 Servlet 有关的。app
在 Servlet 接口的初始化方法,有一个 ServletConfig 类型的参数,同时还给提供了一个获取 ServletConfig 对象的方法。ide
在 GenericServlet 抽象类中,声明了一个 ServletConfig 类型的成员变量,并且对 ServletConfig 接口和 Servlet 接口中的方法进行了实现。url
因此,只须要调用 ServletConfig() 方法就能够得到 ServletConfig 对象。spa
可是,还要注意一点:若是在一个 继承 HttpServlet的 servlet 中重写了init()方法,那么在首行必定要调用父类 init(ServletConfig) 的操做,否则默认调用 GenericServlet 的无参构造,这样声明的 ServletConfig 成员变量就是 null,在 servlet 中使用会报错的。code
没有重写 init(ServletConfig) 方法,正确打印:对象
重写了可是没有调用 super.init(ServletConfig),获取空对象:blog
Demo:
1 <!-- servlet 标签给 Tomcat 配置 Servlet 程序 --> 2 <servlet> 3 <!--servlet-name 标签 Servlet 程序起一个别名(通常是类名) --> 4 <servlet-name>HelloServlet</servlet-name><!--servlet-class 是 Servlet 程序的全类名--> 5 <servlet-class>com.servlet.HelloServlet</servlet-class> 6 <!--init-param 是初始化参数--> 7 <init-param> 8 <!--是参数名--> 9 <param-name>username</param-name> 10 <!--是参数值--> 11 <param-value>root</param-value> 12 </init-param> 13 <!--init-param 是初始化参数--> 14 <init-param> 15 <!--是参数名--> 16 <param-name>url</param-name> 17 <!--是参数值--> 18 <param-value>jdbc:mysql://localhost:3306/test</param-value> 19 </init-param> 20 </servlet> 21 <!--servlet-mapping 标签给 servlet 程序配置访问地址--> 22 <servlet-mapping> 23 <!--servlet-name 标签的做用是告诉服务器, 我当前配置的地址给哪一个 Servlet 程序使用--> 24 <servlet-name>HelloServlet</servlet-name> 25 <!-- 26 url-pattern 标签配置访问地址 <br/> 27 / 斜杠在服务器解析的时候, 表示地址为: http://ip:port/工程路径 <br/> 28 /hello 表示地址为: http://ip:port/工程路径/hello <br/> 29 --> 30 <url-pattern>/hello</url-pattern> 31 </servlet-mapping>
Servlet 程序:
1 @Override 2 public void init(ServletConfig servletConfig) throws ServletException { 3 System.out.println("2 init 初始化方法"); 4 // 一、 能够获取 Servlet 程序的别名 servlet-name 的值 5 System.out.println("HelloServlet 程序的别名是:" + servletConfig.getServletName()); 6 // 二、 获取初始化参数 init-param 7 System.out.println("初始化参数 username 的值是;" + servletConfig.getInitParameter("username")); 8 System.out.println("初始化参数 url 的值是;" + servletConfig.getInitParameter("url")); 9 // 三、 获取 ServletContext 对象 10 System.out.println(servletConfig.getServletContext()); 11 }