听说你JavaWeb学的不好?(十二)

80 阅读1分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第12天,点击查看活动详情

ServletConfig

  • 什么是ServletConfig?

    • Servlet对象的配置信息对象。
    • ServletConfig对象中封装了web.xml文件中对应当前Servlet对象的标签中的配置信息。
  • 一个Servlet对应一个ServletConfig对象。

  • Servlet对象是Tomcat服务器创建,并且ServletConfig对象也是Tomcat服务器创建。并且默认情况下,他们都是在用户发送第一次请求的时候创建。

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

  • ServletConfig接口的实现类是Tomcat服务器给实现的。(Tomcat服务器说的就是WEB服务器。)

  • ServletConfig接口有哪些常用的方法?

    • public String getServletName(); // 获取配置文件中的servlet-namepublic Enumeration<String> getInitParameterNames(); // 获取所有的初始化参数的name
      public String getInitParameter(String name); // 通过初始化参数的name获取value
      ​
      Enumeration<String> names = config.getInitParameterNames();
      while (names.hasMoreElements()) {
          out.print("<br>");
          String key = names.nextElement();
          out.print(key+ "=" + config.getInitParameter(key));
      }
      ​
      public ServletContext getServletContext(); // 获取ServletContext对象
      ​
      ​
      //看GenericServlet中源码发现其写了getInitParameterNames和getInitParameter方法,里面返回的就是config.getInitParameterNames()、config.getInitParameter(key),所以上面调用时不需要config. 而直接this. 或者啥也不写就行了,GenericServlet中源码如下:
      public String getInitParameter(String name) {
          return this.getServletConfig().getInitParameter(name);
      }
      ​
      public Enumeration<String> getInitParameterNames() {
          return this.getServletConfig().getInitParameterNames();
      }
      ​
      //GenericServlet中也有getServletContext方法
      
  • 配置Servlet对象的初始化信息:

-   <servlet>
    <servlet-name>cofig</servlet-name>
    <servlet-class>com.jd.javaweb.servlet.ConfigTestServlet</servlet-class>
    <!--配置Servlet对象初始化信息-->
    <init-param>
        <param-name>driver</param-name>
        <param-value>com.mysql.jdbc.Driver</param-value>
    </init-param>
    <init-param>
        <param-name>url</param-name>
        <param-value>jdbc:mysql://localhost:3306/db01</param-value>
    </init-param>
    <init-param>
        <param-name>user</param-name>
        <param-value>root</param-value>
    </init-param>
    <init-param>
        <param-name>pwd</param-name>
        <param-value>123</param-value>
    </init-param>
</servlet>

idea中如果启动服务后改了代码不想重启服务器怎么办?可以再点debug,选择:Update classes and resources,也可以设置自动刷新。