05GenericServlet

GenericServlet

  • 是一个Servlet,Servlet接口和ServletConfig接口的实现类
  • 新建的Servlet程序直接继承GenericServlet会使开发更简洁
  • 具体实现

    • 在GenericServlet中声明一个ServletConfig类型的成员变量, 在init(ServletConfig)中对其初始化
    • 利用ServletConfig成员变量的方法实现了ServletConfig接口的方法
    • 定义init()方法,在init(ServletConfig)中进行调用
    • 直接覆盖init(ServletConfig),若未super.init(ServletConfig),而直接调用ServletConfig接口的方法,会出现空指针异常。

      @Override
          public void init(ServletConfig config) throws ServletException {
              super.init(config);     //覆盖时调用
          }
      
  • public abstract class GenericServlet implements Servlet,ServletConfig {

    private ServletConfig servletConfig;
    /**
     * Servlet接口的方法
     */
    @Override
    public void destroy() {}
    
    @Override
    public ServletConfig getServletConfig() {
        // TODO Auto-generated method stub
        return servletConfig;
    }
    
    @Override
    public String getServletInfo() {
        // TODO Auto-generated method stub
        return null;
    }
    
    @Override
    public void init(ServletConfig config) throws ServletException {
        this.servletConfig = config;
        init();
    }
    
    //自己新建的方法
    public void init() throws ServletException {
    
    }
    
    @Override
    public abstract void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
        // TODO Auto-generated method stub
    
    }
    
    /**
     * ServletConfig接口的方法
     */
    @Override
    public String getInitParameter(String arg0) {
        return servletConfig.getInitParameter(arg0);
    }
    
    @Override
    public Enumeration getInitParameterNames() {
        return servletConfig.getInitParameterNames();
    }
    
    @Override
    public ServletContext getServletContext() {
        return servletConfig.getServletContext();
    }
    
    @Override
    public String getServletName() {
        return servletConfig.getServletName();
    }
    

    }

你可能感兴趣的:(学习笔记-Servlet)