• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    JSP开发Servlet重写init()方法实例详解

    JSP开发Servlet重写init()方法实例详解

    写一个Servlet时,有时需要我们重写该Servlet的初始化方法,然后,究竟是重写init(ServletConfig config),还是重写init(),这是个问题。要明了这一点,首先要知道Servlet的几个类和接口的联系:

    ServletConfig接口:其中有getServletName();getServletContext();getInitParameter(String name);getInitParameterNames()四个方法。 
    Servlet接口:其中有init(ServletConfig config)方法 
      |--->GenericServlet抽象类:其中有private transient ServletConfig config;属性 
            |--->HttpServlet类 

         通过查看源码,发现HttpServlet中没有init方法.而在GenericServlet抽象类中则实现了Servlet#init(ServletConfig config)方法,不仅如此,还更添加了一个新的不带参数的init()方法。而且在带参数中的init方法中调用了不带参数的init方法。

        应该知道,在Servlet初始化的时候,会自动调用init(ServletConfig config),Container会自动收集一些该Servlet的配置信息,生成一个ServletConfig的实例,通过调用该实例的四个getXXX方法(即ServletConfig接口中的四个方法),我们可以得到该Servlet的这些配置信息。

        而该实例我们如何获取呢?是通过Servlet#getServletConfig()得到的,该方法同样在GenericServlet中实现,具体如下:

    public void init(ServletConfig config) throws ServletException { 
      this.config = config; 
      this.init(); 
    } 
    public ServletConfig getServletConfig() { 
      return config; 
    } 
      
    

       我认为init()的出现,是为了解决一个问题,那就是有些人最开始时候,重写init(ServletConfig config)方法,但却总是忘记去调用“super.init(config);”。试想,如果真的出现这种情况,那么,就会造成一种结果,容器收集的Servlet的配置信息,不能初始化给GenericServlet的config属性,以至于当调用getServletConfig()的时候,会得不到有用的config实例,而只能得到一个null。这样也就无法获取该Servlet的配置信息了。

        而无参数的init()方法在GenericServlet中的出现,解决了这种或许人为造成的获取不到ServletConfig对象的尴尬。可以看到含参init方法调用了无参init,这就让我们可以在处理Servlet初始化参数的时候,只需要重写无参的init()方法就行了。初始化config对象的操作仍然在Container调用init(ServletConfig config)时候完成,然后调用你重写了的init()方法,完成其他初始化操作。

        综合来看,是重写含参还是不含参的init方法,并没有严格的规定,只是如果重写含参init方法,需要先调用父类的含参init方法罢了。两种调用如下:

    public void init(ServletConfig config) throws ServletException { 
        super.init(config); 
        //...code... 
    } 
    public void init() throws ServletException { 
        //...code... 
    } 
    

    感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

    您可能感兴趣的文章:
    • Java,JSP,Servlet获取当前工程路径(绝对路径)问题解析
    • JSP 开发之THE SERVLET NAME ALREADY EXISTS.解决方法
    • JSP中通过Servlet 将服务器硬盘图片并展示到浏览器
    • Jsp+Servlet实现购物车功能
    • JSP 开发之Servlet解决网页缓存问题
    • 浅谈Servlet转发到JSP页面的路径问题(必看)
    • JSP 开发之servlet中调用注入spring管理的dao
    • JSP 中Servlet的自己实现
    上一篇:Spring在web.xml中的配置详细介绍
    下一篇:Spring boot 使用mysql实例详解
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    JSP开发Servlet重写init()方法实例详解 JSP,开发,Servlet,重写,init,