从 上一篇 文章中可以看到,直接实现 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

====================================================

JavaEE GenericServlet 解析的更多相关文章

  1. JavaEE HttpServlet 解析

    上一篇 文章中有提到,GenericServlet 是对 Servlet 的一个通用实现,并提供了一个抽象的 service() 方法.而我们的互联网是使用 Http 协议来通信的,那针对这个&quo ...

  2. java EE设计模式简介

    1.何为设计模式 设计模式提供了对常见应用设计问题的解决方案.在面向对象的编程中,设计模式通常在解决与对象创建和交互相关的问题,而非整体软件架构所面对的大规模问题,它们以样板代码的形式提供了通用的解决 ...

  3. JavaEE:XML解析

    XML解析技术概述1.XML 技术主要企业应用1)存储和传输数据 2)作为框架的配置文件2.使用xml 存储和传输数据涉及到以下两点1)通过程序生成xml2)读取xml 中数据 ---- xml 解析 ...

  4. JavaEE实战——XML文档DOM、SAX、STAX解析方式详解

    原 JavaEE实战--XML文档DOM.SAX.STAX解析方式详解 2016年06月22日 23:10:35 李春春_ 阅读数:3445 标签: DOMSAXSTAXJAXPXML Pull 更多 ...

  5. 传智168期JavaEE就业班 day05-XML 约束与解析

    * 课程回顾: * DOM解析HTML简介 * DOM 文档对象模型 * 解析器 * document对象 * getElementById("id的值"); 返回一个元素(标签) ...

  6. javaEE学习笔记-利用DOM4J解析xml至数据库

    xml代码文件名:test02.xml <ACCESOS> <item> <SOCIO> <NUMERO>00045050</NUMERO> ...

  7. JavaEE XML SAX解析

    SAX解析XML @author ixenos SAX解析工具 SAX解析工具-  Sun公司提供的.内置在jdk中.org.xml.sax.* 核心的API: SAXParser类: 用于读取和解析 ...

  8. JavaEE XML DOM解析之DOM4J

    DOM解析之DOM4J @author ixenos DOM4J常用API 读取xml文档: Document doc = new SAXReader().read("xml文件" ...

  9. JavaEE XML DOM解析

    DOM解析XML @author ixenos XML解析方式(原理) a)     DOM 解析树 b)     SAX  流事件 DOM解析对应主流工具 i.          DOM(官方) i ...

随机推荐

  1. .Net+SQL Server企业应用性能优化笔记—精确查找瓶颈

    首先我们需要部署一个测试环境,将Web项目的源代码拷到测试环境Web服务器IIS上,使得可以直接通过IE访问我们的网站.SQL Server环境可以部署在同一台机器上,条件允许的话有专门的数据库测试服 ...

  2. <训练赛> 垃圾陷阱

    垃圾陷阱 时间限制: 1 Sec  内存限制: 128 MB提交: 78  解决: 38[提交][状态][讨论版] 题目描述 卡门--农夫约翰极其珍视的一条Holsteins奶牛--已经落了到&quo ...

  3. order调用mdp

    Java代码 else            {                crmMessageService[A1] .applyAsync(crmMdpRequest); } public v ...

  4. RAM

    1.     前记 我们知道,不同的计算机结构对RAM 的使用方式是有区别的,典型的计算机结构有两个,冯诺依曼结构和哈佛结构,而两大阵营的领军人物就是传说中的Intel X86系列的8086和51单片 ...

  5. 零基础新手学习Java必须知道的市场行情

    Java如今的市场不如从前,竞争很大,工资非常高,标准非常高,想要胜任一份高薪的工作不是那么容易,只有掌握最新的行情才能更好的了解Java,才能更好的在这个领取发展,让新手小白了解Java市场行情如下 ...

  6. 圆方树简介(UOJ30:CF Round #278 Tourists)

    我写这篇博客的原因 证明我也是学过圆方树的 顺便存存代码 前置技能 双联通分量:点双 然后就没辣 圆方树 建立 新建一个图 定义原图中的所有点为圆点 对于每个点双联通分量(只有两个点的也算) 建立一个 ...

  7. js实现对树深度优先遍历与广度优先遍历

    深度优先与广度优先的定义 首先我们先要知道什么是深度优先什么是广度优先. 深度优先遍历是指从某个顶点出发,首先访问这个顶点,然后找出刚访问这个结点的第一个未被访问的邻结点,然后再以此邻结点为顶点,继续 ...

  8. ------ Tor(洋葱路由器)匿名网络源码分析——主程序入口点(一)------

    --------------------------------------------------------<概览> tor 的源码包可以从官网下载,可能需要预先利用其它FQ软件才能访 ...

  9. nginx学习之rewrite

    rewrite 语法学习 什么是rewrite nginx的rewrite主要功是实现URL地址重写.nginx的rewrite规则需要PCRE的支持,既可以通过Perl兼容正则表达式进行规则匹配.n ...

  10. Django---第三方

    第三方: 3.富文本编辑器:此处以tinymce为例 使用编辑器的显示效果为: 1.下载安装 在网站pypi网站搜索并下载"django-tinymce-2.4.0" 解压 tar ...