码迷,mamicode.com
首页 > 编程语言 > 详细

JavaEE GenericServlet 解析

时间:2018-03-31 15:52:40      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:bugs   需要   style   就是   targe   https   如何   抽象   部分   

从 上一篇 文章中可以看到,直接实现 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 就变得更加简单了,如下图所示:

技术分享图片

 

JavaEE GenericServlet 解析

标签:bugs   需要   style   就是   targe   https   如何   抽象   部分   

原文地址:https://www.cnblogs.com/cyhbyw/p/8682307.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!