11. Servlet入门 - ServletConfig的使用介绍

2022-01-14 17:42:27 浏览数 (1)

11. Servlet入门 - ServletConfig的使用介绍

ServletConfig

ServletConfig 类从类名上来看,就知道是 Servlet 程序的配置信息类。

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

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

ServletConfig 类的三大作用

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

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

3、获取 ServletContext 对象

代码演示 - 使用实现 Servlet 接口实现的类

1.回到之前我们使用 Servlet 接口实现的类,在 init() 的方法处获取 别名 servlet-name 的值

image-20201223232451833

代码语言:javascript复制
@Override
public void init(ServletConfig config) throws ServletException {
    System.out.println("2. init 方法");
    // 1、可以获取 Servlet 程序的别名 servlet-name 的值
    System.out.println("获取 Servlet 程序的别名 servlet-name 的值: "   config.getServletName());
}
2、获取初始化参数 init-param (注意:这种就要使用 web.xml 配置 Servlet 的方式)

除了可以获取 Servlet 的别名,我们还可以获取 xml 中配置的初始化参数。那么我们首先需要在 xml 配置一下初始化参数,如下:

2.1 在 web.xml 配置初始化参数:

image-20201111235852528

代码语言:javascript复制
<!-- servlet标签给Tomcat配置Servlet程序 -->
<servlet>
    <!--servlet-name标签 Servlet程序起一个别名(一般是类名) -->
    <servlet-name>HelloServlet</servlet-name>
    <!--servlet-class是Servlet程序的全类名-->
    <servlet-class>com.test01.HelloServlet</servlet-class>
    <!--init-param 是初始化参数-->
    <init-param>
        <!--是参数名-->
        <param-name>username</param-name>
        <!--是参数值-->
        <param-value>root</param-value>
    </init-param>
    <!--init-param 是初始化参数-->
    <init-param>
        <!--是参数名-->
        <param-name>url</param-name>
        <!--是参数值-->
        <param-value>jdbc:mysql://localhost:3306/test</param-value>
    </init-param>
</servlet>

<!--servlet-mapping标签给servlet程序配置访问地址-->
<servlet-mapping>
    <!--servlet-name标签的作用是告诉服务器,我当前配置的地址给哪个Servlet程序使用-->
    <servlet-name>HelloServlet</servlet-name>
    <!--
        url-pattern标签配置访问地址
           / 斜杠在服务器解析的时候,表示地址为:http://ip:port/工程路径
           /hello 表示地址为:http://ip:port/工程路径/hello
    -->
    <url-pattern>/hello</url-pattern>
</servlet-mapping>
2.2 在 init 方法中读取 init-param

image-20201112000135093

代码语言:javascript复制
@Override
public void init(ServletConfig servletConfig) throws ServletException {
    System.out.println("2. init 初始化方法");
    // 1、可以获取 Servlet 程序的别名 servlet-name 的值
    System.out.println("获取 Servlet 程序的别名 servlet-name 的值: "   servletConfig.getServletName());
    // 2、获取初始化参数 init-param
    System.out.println("初始化参数 username: "   servletConfig.getInitParameter("username"));
    System.out.println("初始化参数 url: "   servletConfig.getInitParameter("url"));
}
3、获取 ServletContext 对象

image-20201112000338669

代码语言:javascript复制
@Override
public void init(ServletConfig servletConfig) throws ServletException {
    System.out.println("2. init 初始化方法");
    // 1、可以获取 Servlet 程序的别名 servlet-name 的值
    System.out.println("获取 Servlet 程序的别名 servlet-name 的值: "   servletConfig.getServletName());
    // 2、获取初始化参数 init-param
    System.out.println("初始化参数 username: "   servletConfig.getInitParameter("username"));
    System.out.println("初始化参数 url: "   servletConfig.getInitParameter("url"));
    // 3、获取 ServletContext 对象
    System.out.println("获取 ServletContext 对象: "   servletConfig.getServletContext());
}

使用总结

一般 ServletConfig 是在提供框架初始化参数的时候使用的,那么也就需要使用 web.xml 配置框架的 Servlet 的时候提供传递参数。

0 人点赞