4-Servlet详解3

4-Servlet详解3

  1. 生命周期

    • 无参构造函数

      public MyServlet2() {
              System.out.println("创建了Servlet对象");
      }
      

      构造函数用于创建对象

    • init 方法

      @Override
      public void init(ServletConfig servletConfig) throws ServletException {
          System.out.println("对Servlet完成初始化操作。。。");
      }
      

      init方法用于初始化,这个方法很少用到,除非说一些特定的参数在程序启动前设置好,比如用户密码。同时在我们执行这个方的时候,我们看到这个方法传入一个参数,类型为接口ServletConfig,在这个 init 方法中我们可以用到它。这个接口是用来描述Servlet基本信息的。

      方法作用描述
      getServletName()返回Servlet的名称全类名(带着包名的类名)
      getInitParameter(String key)获取 init 参数的值web.xml中配置,在<servlet>标签中使用<init-param>标签
      getInitParameterNames()返回所有 initParmter 的 name的值,一般用于遍历初始化参数web.xml中配置,在<servlet>标签中使用多个<init-param>标签
      getServletContext()返回 ServletContext对象,他是Servlet上下文,简单理解就是整个Servlet的管理者,通过他可以拿到Servlet整个服务信息
      <!-- web.xml 配置-->
      <servlet>
          <servlet-name>MyServlet2</servlet-name>
          <servlet-class>com.southwind.servlet.MyServlet2</servlet-class> <!-- 全类名 -->
          <init-param>
              <param-name>username</param-name>
              <param-value>admin</param-value>
           </init-param>
          <init-param>
              <param-name>password</param-name>
              <param-value>123</param-value>
          </init-param>
          <init-param>
              <param-name>type</param-name>
              <param-value>super</param-value>
          </init-param>
      </servlet>
      
      // init 方法
      @Override
      public void init(ServletConfig servletConfig) throws ServletException {
          System.out.println(servletConfig.getServletName());
          System.out.println(servletConfig.getInitParameter("username"));
          Enumeration<String > enumeration = servletConfig.getInitParameterNames();
          while (enumeration.hasMoreElements()){
              String element = enumeration.nextElement();
              System.out.println(servletConfig.getInitParameter(element));
          }
          ServletContext servletContext = servletConfig.getServletContext();
          String contextPath =  servletContext.getContextPath(); // 获取配置中的路径 Deployment 中的 Application path
          System.out.println(contextPath);
          String serverInfo =  servletContext.getServerInfo();  // 获取服务器信息
          System.out.println(serverInfo);
          System.out.println("对Servlet完成初始化操作。。。");
      }
      

      ServletConfig 与 ServletContext 的区别:

      • ServletConfig 作用于某个 Servlet 实例,每个 Servlet 都有对应的 ServletConfig–>局部对象
      • ServletContext 作用于整个 Web 应用,一个 Web 应用对应一个 ServletContext ,多个 Servlet 实例 对应一个 ServletContext
        –>全局对象
      • ServletConfig 好比儿子,ServletContext 就是爸爸,儿子只有一个爸爸,但是爸爸有多个或一个儿子
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值