ServletConfig接口干什么

 ServletConfig是什么

* ServletConfig是Servlet规范中的一员,是一个接口

谁去实现这个接口?

*org.apache.catalina.core.StandardWrapperFacade这个类实现
* 也就是tomcat服务器实现的它

ServletConfig对象谁创建的

* Tomcat(服务器)创建的,在新目录创建servlet时同时创建了servletConfig对象,并将 ServletConfig 对象作为参数传递给 Servlet 。通过 ServletConfig 对象即可获得当前 Servlet 的初始化参数信息。当写两个类都获取Selvert对象时,两个对象地址不一样,因此一个Servlet对象中只有一个ServletConfig对象

获得 ServletConfig 对象:

通过getServletConfig()获取

public class ConfigTestSelvert extends GenericServlet {
    @Override
    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
//        设置响应给客户端的文件格式为html格式
        response.setContentType("text/html");
//        把上述响应写给out
        PrintWriter out = response.getWriter();
//        获取ServletConfig对象
        ServletConfig servletConfig = this.getServletConfig();
        System.out.println(servletConfig);//org.apache.catalina.core.StandardWrapperFacade@5054d770
  • <init-param> 元素是 <servlet> 的子元素, 需要在 <servlet> 元素内使用,表示只对当前 Servlet 有效 。
  • <param-name> 子元素表示参数的名称。
  • <param-value> 子元素表示参数的值。
 <servlet>
        <servlet-name>config</servlet-name>
        <servlet-class>com.bjpowernode.javaweb.servlet.ConfigTestSelvert</servlet-class>

    </servlet>
    <servlet-mapping>
        <servlet-name>config</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>

servletConfig是干什么的

* servletConfig是Servlet的配置信息,一个Servlet就有一个配置对象,两个就有两个。可以通过 ServletConfig 对象即可获得当前 Servlet 的初始化参数信息。

可获得当前 Servlet 的初始化参数信息

SerlvetConfig提供的方法:

 配置 Servlet 初始化参数

  <servlet>
        <servlet-name>config</servlet-name>
        <servlet-class>com.bjpowernode.javaweb.servlet.ConfigTestSelvert</servlet-class>
<!--        这里是可以配置servlet初始化信息-->
        <init-param>
            <param-name>driver</param-name>
            <param-value>com.mysql.cj.jdbc.Driver</param-value>
        </init-param>
        <init-param>
            <param-name>url</param-name>
            <param-value>jdbc:mysql://localhost:3306、text</param-value>
        </init-param>
        <init-param>
            <param-name>user</param-name>
            <param-value>root</param-value>
        </init-param>
        <init-param>
            <param-name>password</param-name>
            <param-value>123456</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>config</servlet-name>
        <url-pattern>/test</url-pattern>
    </servlet-mapping>

//GenericServlet类实现了Servlet,ServletConfig和Serializable接口。它提供除了service方法之外,还实现了这些接口的所有方法。
public class ConfigTestSelvert extends GenericServlet {
    @Override
    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
//        设置响应给客户端的文件格式为html格式
        response.setContentType("text/html");
//        把上述响应写给out
        PrintWriter out = response.getWriter();
//        获取ServletConfig对象
        ServletConfig servletConfig = this.getServletConfig();
        System.out.println(servletConfig);
//        获取  <servlet-name>
     String servletConfig1 = this.getServletName();
     out.print("<ServletName>"+servletConfig1);
     out.print("<br>");

//public Enumeration getInitParameterNames()返回web.xml文件中定义的所有初始化参数名称。
//        public String getInitParameter(String name)返回给定初始化参数名称的参数值。
        Enumeration<String> init = servletConfig.getInitParameterNames();
//        遍历hasMoreElements()是否有跟多元素
        while (init.hasMoreElements()){
            String s = init.nextElement();//取元素
            String initParameter = servletConfig.getInitParameter(s);
            out.print(s+"="+initParameter);
            out.print("<br>");

        }

    }
}

servletConfig对象中到底包装了什么信息

*  servletConfig对象中到底包装了《servlet》《/servlet>标签的配置信息

<servlet>
        <servlet-name>config</servlet-name>
        <servlet-class>com.bjpowernode.javaweb.servlet.ConfigTestSelvert</servlet-class>
    </servlet>
 tomcat小猫咪解析web.xml文件,会自动将<servlet></servlet>标签的配置信息包装到servletconfig中




 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值