Class GenericServlet

该类定义一个普通的、依赖于协议的servlet,如果要写一个用于Web的HTTP servlet,扩展HpptServlet。
一个servlet可以直接扩展GenericServlet类,然而扩展一个指定协议的子类(如HttpServlet)显得更为普遍

import javax.servlet.*;
import java.io.IOException;

//模拟GenericServlet

public class BServlet implements Servlet {

    private ServletConfig config;

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {
        //吧tomcat传递的ServletConfig赋值给本类的一个成员,其实就是他它保存起来,方便在其他方法中实现
        this.config = servletConfig;
        init();
    }
    public void init(){
        System.out.println("hhhh ");
    }

    //这个方法肯定会在init之后调用
    //init()被调用后,本类成员this.config已经有值了
    @Override
    public ServletConfig getServletConfig() {
        return this.config;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {

        System.out.println("每次请求都会被调用");
    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
//模拟实现如下方法,在子类CServlet中调用
    public ServletContext getServletContext() {
        return config.getServletContext();
    }
    public String getServletName(){
        return config.getServletName();
    }
    public String getInitParameter(String name){
        return config.getInitParameter(name);
    }
}
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import java.io.IOException;

public class CServlet extends BServlet {
    @Override
    public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
        String value = getInitParameter("p1");
    }

    @Override//组合的方式来继承父类方法
    public void init()  {
        System.out.println("哇---");
    }
}

你可能感兴趣的:(Class GenericServlet)