JavaEE GenericServlet 解析
从 上一篇 文章中可以看到,直接实现 Servlet 接口需要实现其所有方法,而这通常不是好的做法。相反,一种相对较好的做法是给出一个实现类来默认实现其所有方法或者部分方法,并开放给子类。而子类再在此默认实现类的基础上进行实现,或者根据需要重写这个默认类中的实现。而 GenericServlet 就是对 Servlet 的一个通用实现。
那 GenericServlet 是如何实现 Servlet 的呢?
01. 从下图的源码中可以看出, GenericServlet 的 destroy() 方法默认为空。
02. 它重载了 init(ServletConfig config) 方法并把 config 给成员变量;同时,调用了一个默认为空的 init() 方法!(非常重要)
GenericServlet 为什么要这样做呢?
大概原因是:
一、它把 config 赋值给成员变量,并通过 getServletConfig() 方法展现给子类,以方便子类使用。
二、空的 init() 方法可以开放给子类,让子类自由发挥。
所以,开发中通常的做法是重写 init() 方法而不是重写 init(ServletConfig config) 方法。
03. service() 方法被声明为抽象的,这样,其子类就只需要重写这个方法就能方便地实现 Servlet 了。
写了个简单的Demo来使用GenericServlet,地址:https://github.com/cyhbyw/JavaWEB_atguigu_TongGang
工程名称:cyhDebugSource_GenericServlet
现在,自定义实现的 Servlet 就变得更加简单了,如下图所示:
====================================================
后续内容:针对 Http 协议的 Servlet 实现类 HttpServlet
====================================================
最新文章
- 【python之路3】if 语句
- Python笔记(4)类__属性与描述符
- python 面试必读
- Java 内部类摘抄
- js的querySelector跟querySelectorAll
- python之优雅处理套接字错误
- C++ 关键字 explicit, export, mutable
- SQL-字符串合并
- ZOJ 1076 Gene Assembly
- android测试常用的命令介绍
- C#中常用修饰符
- Intel 的面试经历中国研究院
- 2.3.2 InnoDB内存
- 访问System x3650 IMM2的几种方式
- 先进过程控制之一:浅说APC
- 2.Magicodes.NET框架之路——策略管理
- logstash采集与清洗数据到elasticsearch案例实战
- Docker-02 无人值守安装 docker
- jQuery发布1.9正式版,最后支持IE 6/7/8
- 【 转】__try,__except,__finally,__leave异常模型机制