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 }