Servlet笔记——(2.2.2)继承GenericServlet
来源:互联网 发布:linux ant打包war教程 编辑:程序博客网 时间:2024/06/06 11:52
GenericServlet类是Servlet接口的实现类,我们也可以通过继承GenericServlet来编写自己的Servlet。下面是GenericServlet类的源代码:
public abstract class GenericServlet implements Servlet, ServletConfig, java.io.Serializable { private static final long serialVersionUID = 1L; private transient ServletConfig config; // 定义成员变量 public GenericServlet() {} @Override public void destroy() {} @Override public String getInitParameter(String name) { return getServletConfig().getInitParameter(name); } @Override public Enumeration<String> getInitParameterNames() { return getServletConfig().getInitParameterNames(); } @Override public ServletConfig getServletConfig() { return config;} @Override public ServletContext getServletContext() { return getServletConfig().getServletContext();} @Override public String getServletInfo() { return ""; }/*实现了Servlet接口的init(ServletConfig)方法,把参数config赋值给成员变量config,然后再调用本类自己新建的无参的init()方法*/ @Override public void init(ServletConfig config) throws ServletException { this.config = config; this.init(); }/*无参的init是GenericServlet自己的方法,而不是从Servlet继承下来的。当我们自定义Servlet时,如果想完成初始化操作,就不要去覆盖init(ServletConfig)方法了,而应该去重写init()方法。因为在GenericServlet中的init(ServletConfig)方法中保存了ServletConfig对象,如果覆盖了保存ServletConfig的代码,那么就不能再使用ServletConfig了。*/public void init() throws ServletException {} public void log(String msg) { getServletContext().log(getServletName() + ": " + msg); } public void log(String message, Throwable t) { getServletContext().log(getServletName() + ": " + message, t);} @Override public abstract void service(ServletRequest req, ServletResponse res) throws ServletException, IOException; @Override public String getServletName() { returnconfig.getServletName(); }}
在GenericServlet中,定义了一个ServletConfig config实例变量,并在init(ServletConfig)方法中把参数ServletConfig赋给该实例变量。然后在其他方法中都使用了该实例变量config。
如果子类覆盖了GenericServlet的init(ServletConfig)方法,那么this.config=config这一条语句就会被覆盖,也就是说GenericServlet的实例变量config的值为null,那么所有依赖config的方法就都不能使用了。如果真的希望完成一些初始化操作,那么就应该去覆盖GenericServlet提供的无参的nit()方法,它会在init(ServletConfig)方法中被调用。
另外GenericServlet还实现了ServletConfig接口,所以可以直接调用getInitParameter(String)、getServletContext()等ServletConfig中的方法。
阅读全文
0 0
- Servlet笔记——(2.2.2)继承GenericServlet
- Servlet学习笔记2之通过继承GenericServlet开发Servlet
- 【Servlet学习】继承GenericServlet简单示例
- Servlet,GenericServlet和HttpServlet的继承关系
- Servlet技术之GenericServlet抽象类(学习笔记)
- Servlet——通过GenericServlet和HttpServlet开发Servlet
- Servlet(8)—GenericServlet和改进Servlet实例
- Servlet笔记——(2.2.3)继承HttpServlet
- Servlet API——GenericServlet类的简述
- Servlet API——GenericServlet类的简述
- Servlet-----GenericServlet
- Servlet---详情解析(二)---继承GenericServlet和HttpServlet/适配器
- servlet介绍(2)-----虚拟类GenericServlet
- 【Servlet】(2)有关Servlet实现的几个类:GenericServlet、HttpServlet、ServletConfig、ServletContext
- Servlet学习笔记—继承HttpServlet类(创建Servlet的第二种方法)
- 超全面的JavaWeb笔记day09<Servlet&GenericServlet&HttpServlet&ServletContext>
- javaweb-day05-1(Servlet - GenericServlet、Servlet调用过程图)
- ---servlet(四)Servlet和GenericServlet和HttpServlet
- 一个斜杠引起的血案
- Geotools中实现NC转等值面
- pkcs1与pkcs8格式RSA私钥互相转换
- php语法基础
- 数据结构:实验一
- Servlet笔记——(2.2.2)继承GenericServlet
- java知识点回顾(JavaSE、JavaWeb、数据库、JavaEE)
- kafka知识整理
- 传智播客:学习编程要脚踏实地,传授知识要授人以渔
- Hadoop学习常见问题及答案整理(三)
- 阿里云资源链接
- mvvm
- compile spark
- JavaScript基础之事件