该类定义一个普通的、依赖于协议的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("哇---");
}
}