package javax.servlet; import java.io.IOException; import java.util.Enumeration; public abstract class GenericServlet implements Servlet, ServletConfig, java.io.Serializable { //用于序列化 private static final long serialVersionUID = 1L; //transient序列化时忽略这个成员的值. private transient ServletConfig config; /* 此构造方法啥也不做,因为Servlet的所有初始化任务都是由init方法完成的。 */ public GenericServlet() { // NOOP } /* 重写java.servlet.Servlet接口中的destroy方法。 此方法主要是由Servlet容器调用,用于将Servlet从服务中取出,这个Servelet的生命周期终止。 */ @Override public void destroy() { // NOOP by default } /* 此方法用于获取ServletConfig对象中的初始化参数,通过参数名称获取参数值 */ @Override public String getInitParameter(String name) { return getServletConfig().getInitParameter(name); } /* 此方法用于获取ServletConfig对象中的所有参数的名字以String的形式返回在java.util.Enumeration这个枚举接口中。 如果Servlet没有初始化参数返回一个空的Enumeration对象(不是null)。 */ @Override public Enumeration<String> getInitParameterNames() { return getServletConfig().getInitParameterNames(); } /* 重写java.servlet.Servlet接口中的方法。 此方法主要用于返回ServletConfig对象,这个对象包含Servlet的配置和初始化操作,这里主要是为了给init(ServletConfig config)这个方法使用的。 */ @Override public ServletConfig getServletConfig() { return config; } /* 重写java.servlet.ServletConfig接口中的方法 此方法主要用于获取ServletContext对象 */ @Override public ServletContext getServletContext() { return getServletConfig().getServletContext(); } /* 重写java.servlet.Servlet接口中的方法。 此方法主要用于返回servlet信息的,如作者,版权,版本,默认返回空字符串。 可以重写此方法,用于返回更有意义的信息。 */ @Override public String getServletInfo() { return ""; } /** 重写java.servlet.Servlet接口中的方法。 将Servlet容器给的ServletConfig对象,赋值给成员config 并调用init()方法初始化servlet。 */ @Override public void init(ServletConfig config) throws ServletException { this.config = config; this.init(); } /* 主要被用于方便重写,不用调用super.init(config)方法,本身没有任何实现 */ public void init() throws ServletException { // NOOP by default } /* 将要输入的信息,输入到servlet的日志文件中,前缀是servlet的名字 */ public void log(String msg) { getServletContext().log(getServletName() + ": " + msg); } /* 将给定的异常信息和堆栈追踪写入servlet的日志文件中,前缀是servlet的名字 */ public void log(String message, Throwable t) { getServletContext().log(getServletName() + ": " + message, t); } /* javax.servlet.Servlet接口中的方法.抽象方法 此方法主要是由Servelt容器调用,用于处理来自于客户端的请求 */ @Override public abstract void service(ServletRequest req, ServletResponse res) throws ServletException, IOException; /* 重写javax.servlet.ServletContext接口中的方法. */ @Override public String getServletName() { return config.getServletName(); } }
javax.servlet.GenericServlet源码分析
猜你喜欢
转载自www.cnblogs.com/linglongfang/p/12575058.html
今日推荐
周排行