编写一个标准抽象通用的类
以后所有的Servlet类都不要直接实现Servlet接口了
以后所有的Servlet类都要继承GenericServlet类
GenericServlet就是一个适配器
为什么要一个final init()的方法,不想让别人去更改里面的东西,Servlet的生命周期
public abstract class GenericServlet implements Servlet {
private ServletConfig config;
@Override
public final void init(ServletConfig config) throws ServletException {
this.config = config;
this.init();
}
public void init(){
}
@Override
public ServletConfig getServletConfig() {
return config;
}
/**
* 抽象方法,这个方法最常用,所以要求子类必须实现Servlet方法。
* @param servletRequest
* @param servletResponse
* @throws ServletException
* @throws IOException
*/
@Override
public abstract void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException;
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
下面是写类去继承刚才实现接口的那个类,完成是适配器,只实现一个方法
public class LoginServlet extends GenericServlet{
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("LoginServlet's service execute!");
}
}
public class UserServlet extends GenericServlet {
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("UserServlet's service execute!");
}
}
public class VipServlet extends GenericServlet{
@Override
public void init(){
System.out.println("init‘s method excute!");
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("service’s method excute!");
}
}