如何更好的使用servlet?GernericServlet可以由自己仿照一个出来,下面就是介绍了如何写这样的一个类
1.init方法 妥善的保存config对象
2.空参init方法,为了防止开发人员重写 原生init方法
3.service方法空实现=> 声明城抽象
4.destory方法空实现
5.实现getServletInfo,getServletConfig
6.实现了servletConfig接口. 接口中的方法直接调用config实现类实现.
代码实现
package ming.com.hello;
import java.io.IOException;
import java.util.Enumeration;
import javax.ejb.Init;
import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
/*
* 模仿写一个GenericServlet类
*/
public abstract class GenericServlet implements Servlet,ServletConfig{
private ServletConfig config; //固定写法
@Override
public void destroy() {
}
@Override
public ServletConfig getServletConfig() {
return config;
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void init(ServletConfig config) throws ServletException {
this.config=config;
this.init();
}
//添加一个空参应用方法,来避免用户调用的时候讲 有参引用方法覆盖,
//相当于用户重写空参init()方法即可完成初始化
public void init() throws ServletException{
}
//将此 方法声明为抽象方法,强迫用户去实现这个方法,因为这个方法是你调用这个类的目的,否则没有意义
@Override
public abstract void service(ServletRequest req, ServletResponse res) throws ServletException, IOException;
@Override
public String getInitParameter(String name) {
return config.getInitParameter(name);
}
@Override
public Enumeration<String> getInitParameterNames() {
return config.getInitParameterNames();
}
@Override
public ServletContext getServletContext() {
return config.getServletContext();
}
@Override
public String getServletName() {
return config.getServletName();
}
}
注意:1、加上一个无参构造方法,来避免用户调用的时候调用有参构造方法覆盖,
相当于用户重写空参init()方法即可完成初始化
2、将server()方法声明为抽象方法,强迫用户去实现这个方法,因为这个方法是你调用这个类的目的,否则没有意义
3、为了让用户更加方便的使用ServletConfig的四个方法,在这个类中实现这个接口,完善这几个方法