GenericServlet

1.是一个Servlet.是Servlet接口和ServletConfig接口的实现类,但是一个抽象类,其中servlet方法为抽象方法

2.如果新建的Servlet程序直接继承GenericServlet会使开发更简介

3.具体实现:

1> 在GenericServlet中声明一个ServletConfig类型的成员变量,在init(ServletConfig) 方法中对其进行初始化

2>利用ServletConfig成员变量的方法实现ServletConfig接口的方法

3>还定义了一个init()方法,在init(ServletConfig)方法中对其进行调用,子类可以直接覆盖init() 在其中实现对Servlet的初始化.

4>不建议直接覆盖init(ServletConfig),因为如果忘记编写super.init(config),而是用了ServletConfig接口的方法,这会出现空指针异常.

5>新建的init()并不是Servlet的生命周期方法,而initial(ServletConfig)才是生命周期方法

资料地址

https://archive.apache.org/dist/tomcat/

 

 

// 自定义一个Servlet接口的实现类:让开发的任何Servlet都来继承该类.以简化开发


public abstract class MyGenericServlet implements Servlet , ServletConfig{

    @Override
    public void destroy() {}

    @Override
    public ServletConfig getServletConfig() {
        return servletConfig;
    }

    @Override
    public String getServletInfo() {
        // TODO Auto-generated method stub
        return null;
    }
    
    private ServletConfig servletConfig;

    @Override
    public void init(ServletConfig arg0) throws ServletException {
        this.servletConfig = arg0;
        init();

    }

    public void init() throws ServletException {}
    
    @Override
    public abstract void service(ServletRequest arg0, ServletResponse arg1)
            throws ServletException, IOException;

    //以下方法为ServletConfig接口的方法
    
    @Override
    public String getInitParameter(String arg0) {
        return servletConfig.getInitParameter(arg0);
    }

    @Override
    public Enumeration<String> getInitParameterNames() {
        return servletConfig.getInitParameterNames();
    }

    @Override
    public ServletContext getServletContext() {
        return servletConfig.getServletContext();
    }

    @Override
    public String getServletName() {
        return servletConfig.getServletName();
    }
MyGenericServlet

 

posted @ 2020-02-27 09:18  野香蕉  阅读(188)  评论(0)    收藏  举报