ServletConfig

ServletConfig

  • 初识ServletConfig
  • 谁去实现ServletConfig这个接口
  • 一个Servlet对象有一个ServletConfig对象,他们之间是一对一
  • ServletConfig对象是谁创建?在什么时候创建?
  • ServletConfig接口的作用
  • ServletConfig对象中包装的信息
  • 常用方法

JavaWeb系列教程
JavaWeb—Servlet
模拟Servlet本质
使用IDEA开发Servlet程序
Servlet对象的生命周期
适配器(GenericServlet)改造Servlet
ServletConfig
Servlet–ServletContext
HTTP协议,get和post的区别
web站点欢迎页
一篇学会HttpServletRequest
如果大家觉得有帮助的话,不妨动动小手,点赞收藏一波,也方便后面的复习哈
在这里插入图片描述

ServletConfig_第1张图片

初识ServletConfig

ServletConfig 是一个接口(jakarta.Servlet的一个接口)
ServletConfig 是Servlet规范的一员
全称:jakarta.servlet.ServletConfig
Servlet对象的配置信息对象。
ServletConfig对象中封装了标签中的配置信息。(web.xml文件中servlet的配置信息)
每个serlvet类的实例都有且只有一个对应的servletConfig对象

谁去实现ServletConfig这个接口

public class org.apache.catalina.core.StandardWrapperFacade

结论:Tomcat服务器实现了ServletConfig这个接口-----WEB服务器实现了这个接口
不同服务器有不同的实现
思考:如果把Tomcat服务器换成jetty服务器,输出ServletConfig对象的时候,还是这个结果吗?
不一定一样,包名类名可能和Tomcat服务器不一样,但是他们都实现了ServletConfig这个规范

一个Servlet对象有一个ServletConfig对象,他们之间是一对一

ServletConfig对象是谁创建?在什么时候创建?

  • Tomcat服务器调用Servlet对象的init方法的时候需要传一个ServletConfig对象的参数给init方法。

    • Tomcat服务器(WEB服务器)创建了ServletConfig对象
      在创建Servlet对象的时候,同时创建了ServletConfig对象
    • Servlet对象是Tomcat服务器创建,并且ServletConfig对象也是Tomcat服务器创建。并且默认情况下,他们都是在用户发送第一次请求的时候创建。
  • Tomcat服务器调用Servlet对象的init方法的时候需要传一个ServletConfig对象的参数给init方法。

    ServletConfig接口的作用

Config是Configuration单词的缩写
ServletConfig对象翻译为:Servlet对象的配置信息对象
一个Servlet对象就有一个配置信息对象

ServletConfig对象中包装的信息

web.xml文件中标签中的配置信息

常用方法

public String getInitParameter(String name); // 通过初始化参数的name获取value
 <servlet>
        <servlet-name>configTestServletservlet-name>
        <servlet-class>com.bjpowernode.servlet.ConfigTestServletservlet-class>
        
        <init-param>
            <param-name>driverparam-name>
            <param-value>com.mysql.cj.jdbc.Driverparam-value>
        init-param>
       
    servlet>
    <servlet-mapping>
        <servlet-name>configTestServletservlet-name>
        <url-pattern>/testurl-pattern>
    servlet-mapping>

String value=config.getInitParameter("driver);
通过这个方法,传入name,可以获取初始化配置信息的value

public Enumeration<String> getInitParameterNames(); // 获取所有的初始化参数的name
public ServletContext getServletContext(); // 获取ServletContext对象
public String getServletName(); // 获取当前Servlet的name
package com.bjpowernode.servlet;

import jakarta.servlet.*;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
 /
 * @author zengyihong
 * @create 2022--03--06 18:39
 */
public class ConfigTestServlet extends GenericServlet {
    @Override
    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html");
        PrintWriter out=response.getWriter();

        ServletConfig config = this.getServletConfig();
        //org.apache.catalina.core.StandardWrapperFacade@778f4ce
        out.println("ServletConfig对象:"+config);
        out.println("
"
); String configServletName = config.getServletName(); out.println(""+configServletName+""); //通过ServletConfig对象中的方法可以获取web.xml文件中的初始化参数配置信息 //java.util.Enumeration getInitParameterNames() 获取所有初始化参数name //java.lang.String getInitParameter(java.lang.String name) 通过初始化参数的name,来获取value Enumeration<String> initParameterNames = config.getInitParameterNames();//获取对应name的value //遍历集合 out.println("
"
); while (initParameterNames.hasMoreElements()){ String s = initParameterNames.nextElement(); String value = config.getInitParameter(s); out.println(s+"----->"+value); out.println("
"
); } //实际上获取一个Servlet对象的初始化参数,可以不用获取ServletConfig对象 //因为适配器有相关方法 Enumeration<String> names = this.getInitParameterNames(); while (names.hasMoreElements()){ String s = names.nextElement(); System.out.println(s+"---->"+this.getInitParameter(s)); //out.println("
");
} //怎么获取ServletContext对象 //第一种方式通过ServletConfig对象来获取ServletContext对象 ServletContext application=config.getServletContext(); //输出 //org.apache.catalina.core.ApplicationContextFacade@bb8cbf0 out.print("
"
+application); //第二种:通过this来获取ServletContext对象,注意:this必须是继承GenericServlet ServletContext application2 = this.getServletContext(); //org.apache.catalina.core.ApplicationContextFacade@bb8cbf0 out.print("
"
+application2); } }

希望得到大家的支持在这里插入图片描述

你可能感兴趣的:(JavaWeb,tomcat,服务器,java,servlet)