Loading

ServletConfig

1 什么是ServletConfig

1. 是Servlet程序的配置信息类
2. Servlet和ServletConfig对象都是由Tomcat负责创建
3. Servlet程序是第一次访问的时候创建的,ServletConfig是每个Servlet程序创建时,就创建一个对应的ServletConfig对象

2 ServletConfig

  • 三大作用

    1. 可以获得Servlet程序的别名(servlet-name)的值
    2. 获取初始化参数init-param
    3. 获取ServletContext对象
    
  • 编码

    Web.xml

    <servlet>
      <servlet-name>MyServlet_03</servlet-name>
      <servlet-class>com.dong.servlet.MyServlet_03</servlet-class>
      <!--初始化参数-->
      <init-param>
        <param-name>name</param-name>
        <param-value>张三</param-value>
      </init-param>
    </servlet>
    <servlet-mapping>
      <servlet-name>MyServlet_03</servlet-name>
      <url-pattern>/test3</url-pattern>
    </servlet-mapping>
    

    Servlet:

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("进入方法!");
        //获取Servlet的别名
        System.out.println(getServletConfig().getServletName());
        //获取初始化参数的值
        System.out.println(getServletConfig().getInitParameter("name"));
        //获取ServletContext对象
        System.out.println(getServletConfig().getServletContext());
    }
    

3. 细节

  • getServletConfig

    在HttpServlet的继承类中,可以直接获取ServletContext对象,通过 `getServletContext()` 方法,也可以通过ServeletConfig获取
    因为HttpServlet继承自GenericServlet, 而GenericServlet实现了ServletConfig接口, 所以, 通过继承HttpServlet而来的类中, 都会存在ServletConfig
    

    源码:

    public ServletContext getServletContext() {
        ServletConfig sc = this.getServletConfig();
        if (sc == null) {
            throw new IllegalStateException(lStrings.getString("err.servlet_config_not_initialized"));
        } else {
            return sc.getServletContext();
        }
    }
    
  • init

    任何继承GenericServlet的类的int方法中,都要调用父类的int方法.这是因为在int方法中传递着ServletConfig实例,我们都知道GenericServlet实现了ServletConfig实例
    
     @Override
     public void init(ServletConfig servletConfig) throws ServletException {
         super.init(config);
     }
    
posted @ 2022-06-28 22:17  苏无及  阅读(62)  评论(0编辑  收藏  举报