GenericServlet

1)是一個Servlet,是Servlet接口和ServletConfig接口的實現類,但是一個抽象類,其中的service方法爲抽象方法


2)如果新建的Servlet程序直接繼承GenericServlet會使開發更簡潔
public abstract class MyGenericServlet implements Servlet ,ServletConfig{


3)在GenericServlet中聲明瞭一個ServletConfig類型的對象,在init(ServletConfig)方法中對其進行了初始化
利用servletConfig成員變量的方法實現了ServletConfig接口的方法
還定義了一個init()方法,在init(ServletConfig)方法中對其進行了調用,子類可以直接覆蓋init()在其中實現對Servlet的初始化
不建議直接覆蓋init(ServletConfig),因爲如果忘記編寫super.init(Config),而還是用了ServletConfig接口方法,
則會出現空指針異常
新建的init()並非Servlet的生命週期方法,而init(ServletConfig)是生命週期相關的方法。
private ServletConfig servletConfig;

@Override
public void destroy() {
}


@Override
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return servletConfig;
}


@Override
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}


@Override
public void init(ServletConfig arg0) throws ServletException {
// TODO Auto-generated method stub
             this.servletConfig=arg0;
             init();
}

public void init() throws ServletException {

}


@Override
public  abstract void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException ;



//以下方法爲ServletConfig接口的方法
@Override
public String getInitParameter(String arg0) {
// TODO Auto-generated method stub
return servletConfig.getInitParameter(arg0);
}


@Override
public Enumeration<String> getInitParameterNames() {
// TODO Auto-generated method stub
return servletConfig.getInitParameterNames();
}


@Override
public ServletContext getServletContext() {
// TODO Auto-generated method stub
return servletConfig.getServletContext();
}


@Override
public String getServletName() {
// TODO Auto-generated method stub
return servletConfig.getServletName();
}


}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章