JavaEE HttpServlet 解析
2018-06-18 02:26:31来源:未知 阅读 ()
上一篇 文章中有提到,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 是如何工作的?
====================================================
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- JVM常见面试题解析 2020-06-11
- 深入解析ThreadLocal和ThreadLocalMap 2020-06-08
- dockerMesos配置项是怎么解析的?案例详解 2020-06-02
- 最新115道经典Java面试题及答案解析,快来看看你掌握了多少 2020-06-01
- Spark SQL源码解析(五)SparkPlan准备和执行阶段 2020-05-27
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash