---servlet(四)Servlet和GenericServlet和HttpServlet

来源:互联网 发布:mysql employees表 编辑:程序博客网 时间:2024/05/16 05:39

Servlet和GenericServlet和HttpServlet

UML图:
这里写图片描述

Servlet

使用直接实现Servlet接口必须实现以下五个方法

  • init(servletconfig config)
  • service(servletrequest
  • destroy()
  • getservletconfig()
  • getservletinfo()
public class TestServlet implements Servlet {    private ServletConfig servletconfig;    @Override    public void init(ServletConfig config) throws ServletException {        // TODO Auto-generated method stub        this.servletconfig = config;    }    @Override    public ServletConfig getServletConfig() {        // TODO Auto-generated method stub        return servletconfig;    }    @Override    public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {        // TODO Auto-generated method stub    }    @Override    public String getServletInfo() {        // TODO Auto-generated method stub        return getServletInfo();    }    @Override    public void destroy() {        // TODO Auto-generated method stub    }}

GenericServlet

GenericServlet类是一个抽象类,提供了Servle接口的基本实现,他的子类需要实现其service方法

public abstract class MyGenericServlet implements Servlet, ServletConfig {    private ServletConfig servletConfig;    // 以下为实现Servlet接口中的方法    @Override    public void init(ServletConfig config) throws ServletException {        // TODO Auto-generated method stub        this.servletConfig = config;        init();    }    /**     * 两个Init方法,如果以后在子类中想要重写init,直接重写没有参数的init();     *      * 如果在子类中重写了init(ServletConfig config),     *      * 那么servletConfig就不能初始化,调用getServletConfig 会产生空指针异常     *      * 通常在编写继承自GenericServlet的Servlet类时,只需重写不带参数的init()方法就可以了。如果覆盖了带参数的init(     * ServletConfig config )方法,那么应该在子类的该方法中,包含一句super.init(config)代码调用。     *      */    private void init() {        // TODO Auto-generated method stub    }    @Override    public ServletConfig getServletConfig() {        // TODO Auto-generated method stub        return servletConfig;    }    @Override    public abstract void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;    @Override    public String getServletInfo() {        // TODO Auto-generated method stub        return getServletInfo();    }    @Override    public void destroy() {        // TODO Auto-generated method stub    }    // 以下为实现ServletConfig接口的方法    @Override    public String getServletName() {        // TODO Auto-generated method stub        return servletConfig.getServletName();    }    @Override    public ServletContext getServletContext() {        // TODO Auto-generated method stub        return servletConfig.getServletContext();    }    @Override    public String getInitParameter(String name) {        // TODO Auto-generated method stub        return servletConfig.getInitParameter(name);    }    @Override    public Enumeration<String> getInitParameterNames() {        // TODO Auto-generated method stub        return servletConfig.getInitParameterNames();    }}

HttpServlet

httpservlet类扩展了genericservlet并且提供了servlet接口中具体于http的实现,它更象一个其他所有的servlet都要扩展的类,主要使用这个类

/** * 对于HTTP协议的一个Servlet基类 *  * @author tuxianchao * */public class MyHttpServlet extends MyGenericServlet {    @Override    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {        // TODO Auto-generated method stub        if (request instanceof HttpServletRequest && response instanceof HttpServletResponse) {            service((HttpServletRequest) request, (HttpServletResponse) response);        }    }    public void service(HttpServletRequest request, HttpServletResponse response) {        // TODO Auto-generated method stub        // 根据请求方式对应处理        String method = request.getMethod();        if ("GET".equalsIgnoreCase(method)) {            doGet(request, response);        } else if ("POST".equalsIgnoreCase(method)) {            doPost(request, response);        }    }    public void doGet(HttpServletRequest request, HttpServletResponse response) {        // TODO Auto-generated method stub    }    public void doPost(HttpServletRequest request, HttpServletResponse response) {        // TODO Auto-generated method stub    }}
0 0
原创粉丝点击