JavaWeb 之 ServletConfig 接口

Posted 格物致知_Tony

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JavaWeb 之 ServletConfig 接口相关的知识,希望对你有一定的参考价值。

一、ServletConfig 接口

  1、简介

    ServletConfig 类,见名知意,就是 Servlet 程序的配置信息类。

    Servlet 程序和 ServletConfig 对象都是由 Tomcat 负责创建,供我们使用的。

    Servlet 程序默认是第一次访问的时候创建,ServletConfig 是每个 Servlet 程序创建时,就创建一个与之对应的 ServletConfig 对象。

  2、接口的信息

    ServletConfig 这个类中声明了四个方法,可以看到这四个方法都是与 Servlet 有关的。

    

   3、获取 ServletConfig 对象

    在 Servlet 接口的初始化方法,有一个 ServletConfig 类型的参数,同时还给提供了一个获取 ServletConfig 对象的方法。

                 

          

     在 GenericServlet 抽象类中,声明了一个 ServletConfig 类型的成员变量,而且对 ServletConfig 接口和 Servlet 接口中的方法进行了实现。

      

         所以,只需要调用 ServletConfig() 方法就可以获得 ServletConfig 对象。

       但是,还要注意一点:如果在一个 继承 HttpServlet的 servlet 中重写了init()方法,那么在首行一定要调用父类 init(ServletConfig) 的操作,不然默认调用 GenericServlet 的无参构造,这样声明的 ServletConfig 成员变量就是 null,在 servlet 中使用会报错的。

      没有重写 init(ServletConfig) 方法,正确打印:

      

      重写了但是没有调用 super.init(ServletConfig),获取空对象:

        

         

二、ServletConfig 类的三大作用

  1、可以获取 Servlet 程序的别名 servlet-name 的值

  2、可以获取 Servlet 初始化参数 init-param

  3、可以获取 ServletContext 对象

    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         // 1、 可以获取 Servlet 程序的别名 servlet-name 的值
 5         System.out.println("HelloServlet 程序的别名是:" + servletConfig.getServletName());
 6         // 2、 获取初始化参数 init-param
 7         System.out.println("初始化参数 username 的值是;" + servletConfig.getInitParameter("username"));
 8         System.out.println("初始化参数 url 的值是;" + servletConfig.getInitParameter("url"));
 9         // 3、 获取 ServletContext 对象
10         System.out.println(servletConfig.getServletContext());
11     }

 

以上是关于JavaWeb 之 ServletConfig 接口的主要内容,如果未能解决你的问题,请参考以下文章

JavaWeb学习笔记:ServletConfig()和ServletContext()

JavaWeb基础: ServletConfig

JavaWeb学习之Servlet----ServletConfig获取配置信息ServletContext的应用(转)

深入分析JavaWeb servletConfig 与servletContext

javaWeb_Servlet_servlet基础_ServletConfig

javaWeb基础之Servlet