ServletConfig基本概念

  • ServletConfig 是 Servlet 的配置参数对象,在 Servlet 的规范中,允许为每一个 Servlet 都提供一些初始化的配置。所以,每个 Servlet 都有一个自己的 ServletConfig
  • 作用:在 Servlet 的初始化时,把一些配置信息传递给 Servlet

生命周期

  • 生命周期:和 Servlet 相同

  • 由于它是在初始化阶段读取了web.xml中为Servlet准备的初始化配置,并把配置信息传递给Servlet,所以生命周期与Servlet相同

  • 这里需要注意的是,如果Servlet配置了<load-on-startup>1</load-on-startup>,那么ServletConfig也会在应用加载时创建

  • ServletConfig的配置信息都是键值对的形式

ServletConfig的配置方式

  • <servlet>标签中,通过<init-param>标签来配置。有两个子标签。

  • <param-name>:代表初始化参数的 key。

  • <param-value>:代表初始化参数的 value。

    • 一个init-param配置一个信息,一个信息由name和value组成
  • 案例

    package com.lichee.servlet;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class ServletConfigDemo extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
        }
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req,resp);
        }
    }
    

    配置Servlet

    <!--配置Servlet-->
    <servlet>
        <servlet-name>servletConfigDemo</servlet-name>
        <servlet-class>com.lichee.servlet.ServletConfigDemo</servlet-class>
        <!--配置ServletConfig初始化参数-->
        <init-param>
             <!--用于获取初始化参数的key-->
            <param-name>encoding</param-name>
            <!--初始化参数的值-->
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>desc</param-name>
            <param-value>This is ServletConfig</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>servletConfigDemo</servlet-name>
        <url-pattern>/servletConfigDemo</url-pattern>
    </servlet-mapping>
    

ServletConfig的常用方法

  • 常用方法:

    返回值方法名说明
    StringgetInitParameter(String name)根据参数名称获取参数的值
    ServletContextgetServletContext()获取ServletContext对象
  • 代码展示:

    public class ServletConfigDemo extends HttpServlet {
        //声明ServletConfig配置对象
        private ServletConfig config;
    
        //通过init方法来为ServletConfig配置对象赋值
        @Override
        public void init(ServletConfig config) throws ServletException {
            this.config = config;
        }
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //根据key获取value
            String encodingValue = config.getInitParameter("encoding");
            System.out.println(encodingValue);
            //获取ServletContext对象
            ServletContext context = config.getServletContext();
            System.out.println(context);
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req,resp);
        }
    }
    
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐