编写一个标准抽象通用的类
以后所有的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!");
}
}
本文介绍了如何通过创建一个抽象的GenericServlet类来作为适配器,使得所有Servlet类不再直接实现Servlet接口,而是继承GenericServlet。GenericServlet中包含了一个final的init()方法以防止被重写,并且要求子类实现抽象的service()方法。示例展示了LoginServlet、UserServlet和VipServlet如何继承GenericServlet并仅实现service()方法。这种设计模式提高了代码的复用性和规范性。
1267

被折叠的 条评论
为什么被折叠?



