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学习之Servlet----ServletConfig获取配置信息ServletContext的应用(转)
深入分析JavaWeb servletConfig 与servletContext