上一篇 文章中有提到,GenericServlet 是对 Servlet 的一个通用实现,并提供了一个抽象的 service() 方法。而我们的互联网是使用 Http 协议来通信的,那针对这个“特殊的” Http 协议,有没有与之对应的 Servlet 实现呢?

有的,它就是 HttpServlet,并且,它直接继承自 GenericServlet,如下图所示。

同时,从上面的图片中可以看到,HttpServlet 默认支持的 7 个 Http 方法:Delete、Head、Get、Options、Post、Put、Trace。

简单Demo代码地址:https://github.com/cyhbyw/JavaWEB_atguigu_TongGang

工程名称: cyhDebugSource_HttpServlet

HttpServlet 又是如何通过继承 GenericServlet 并实现对 Http 协议的支持呢?

从下图中容易看出,它在重写的 service() 方法中直接将 ServletRequest & ServletResponse 转为 HttpServletRequest & HttpServletResponse,并调用重载的 service() 方法。

而这个重载的 service() 方法实现如下。注意,方法入参与上一个重写的 service() 方法的不一样!

同时,它从 HttpServletRequest 中获取到请求方式并调用对应的 doGet(), doPost(), doPut() 等方法。

以 doPost() 为例,其实现如下;可以看到,访问级别为 protected 并且默认实现是直接返回错误,所以,这是一个开放给子类去继承并实现的方法。

如果子类没有实现对应的方法,则请求结果如下图所示。

相反,要实现对 get, put, post 等 Http 请求方式的不同处理,就变得非常简单了,如下图所示

直接实现对应的 goGet(), doPost(), doPut() 等方法就可以了,并且,入参是 HttpServletRequest & HttpServletResponse,这可以很方便地处理 Http 相关的内容。

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

后续内容:SpringMVC 中的 DispatcherServlet 是如何工作的?

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

JavaEE HttpServlet 解析的更多相关文章

  1. JavaEE GenericServlet 解析

    从 上一篇 文章中可以看到,直接实现 Servlet 接口需要实现其所有方法,而这通常不是好的做法.相反,一种相对较好的做法是给出一个实现类来默认实现其所有方法或者部分方法,并开放给子类.而子类再在此 ...

  2. 解析Tomcat之HttpServlet详解

    解析Tomcat之HttpServlet详解 Servlet的框架是 由两个Java包组成:javax.servlet和javax.servlet.http. 在javax.servlet包中定义了所 ...

  3. HttpServlet详解

    http://www.cnblogs.com/panjun-Donet/archive/2010/02/22/1671290.html Servlet的框架是由两个Java包组成:javax.serv ...

  4. HTTP与HttpServlet

    (1).HTTP协议 Web浏览器和服务器通过HTTP协议在Internet上发送和接收消息.HTTP是一种基于请求/响应模式的协议.客户端发送一个请求,服务器端返回对该请求响应. . (2).HTT ...

  5. 【转】HttpServlet详解

    [转]HttpServlet详解 Servlet的框架是由两个Java包组成:javax.servlet和javax.servlet.http. 在javax.servlet包中定义了所有的Servl ...

  6. 关于HttpServlet和Servlet以及doPost和doGet关系

    这两天在看Servlet和Jsp,spring太难了,还是先看看基础,只怪自己太弱了. Servlet是一个接口,本身定义的是一种网络服务,HttpServlet是已经实现了Servlet接口,也就是 ...

  7. HttpServlet 详解(基础)

    HttpServlet详解 大家都知道Servlet,但是不一定很清楚servlet框架,这个框架是由两个Java包组成:javax.servlet和javax.servlet.http. 在java ...

  8. 【数据服务中间件】一、HttpServlet

    一.概念 Servlet的框架是由两个Java包组成:javax.servlet和javax.servlet.http GenericServlet和HttpServlet 3个方法代表了Servle ...

  9. servlet 之 HttpServlet抽象类详解

    Servlet的框架是由两个Java包组成:javax.servlet和javax.servlet.http. 在javax.servlet包中定义了所有的Servlet类都必须实现或扩展的的通用接口 ...

随机推荐

  1. Java中的StringBuffer

    Java中的StringBuffer /** * */ package com.you.model; /** * @author YouHaidong * */ public class StrFoo ...

  2. 芝麻HTTP: Learning to Rank概述

    Learning to Rank,即排序学习,简称为 L2R,它是构建排序模型的机器学习方法,在信息检索.自然语言处理.数据挖掘等场景中具有重要的作用.其达到的效果是:给定一组文档,对任意查询请求给出 ...

  3. 下载安装eclipse

    其实在配置好jdk之后,只要下载eclipse压缩包下载完解压就行了.很多人在eclipse官网上下载的安装包版本的,下载完了之后又不知道怎么安装.下面我给大家介绍以下如何下载eclipse的Oxyg ...

  4. n人围成一圈报数

    题目:有n个人围成一圈,顺序排号.从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来的第几号的那位 思路:用一个数组存这n个人,里面的初始状态全设为1,表示都还在圈子里面. ...

  5. PyTorch官方中文文档:torch.Tensor

    torch.Tensor torch.Tensor是一种包含单一数据类型元素的多维矩阵. Torch定义了七种CPU tensor类型和八种GPU tensor类型: Data tyoe CPU te ...

  6. JAVA容器的那些事—集合

    1.首先我们先讲下Collection接口 Collection接口:Collection是最基本的集合接口,它是由一个独立元素所组成的序列,这些元素服务一条或多条规则.一个Collection代表一 ...

  7. Java关键字——native

    本篇博客我们将介绍Java中的一个关键字——native. native 关键字在 JDK 源码中很多类中都有,在 Object.java类中,其 getClass() 方法.hashCode()方法 ...

  8. BZOJ 5039: [Jsoi2014]序列维护

    5039: [Jsoi2014]序列维护 Time Limit: 20 Sec  Memory Limit: 256 MBSubmit: 282  Solved: 169[Submit][Status ...

  9. SharedPreferences实现保存用户名功能

    1. 简介   SharedPreferences是一种轻型的数据存储方式,通过key-value键值对的方式将数据存储在xml文件中,常用于存储简单的配置信息. 2. 使用方式 2.1 获取Shar ...

  10. xx-net连接教程

    第一步:安装xx-net 在github上下载xx-net,网址 解压后点击运行start.bat文件,此时会提醒是不信任的文件,此时在系统偏好设置里的安全性与隐私去设置让它能打开. 第二步:安装Sw ...