JAVA重写doget_Tomcat源码分析之 doGet方法(一)

本文深入探讨了JavaWeb中Servlet的doGet方法,从HelloServlet出发,通过源码分析展示了请求从接收到处理的完整流程,涉及HttpServlet、ApplicationFilterChain等关键组件。通过对Servlet生命周期和doGet方法的详细解释,揭示了Tomcat内部工作原理。
摘要由CSDN通过智能技术生成

Servlet是JavaWeb开发中最常使用的一个接口,尤其是这个接口中的doGet()和doPost()方法。我们在做web开发的时候,经常会自定义一个Servlet如HelloServlet,并且让这个类继承HttpServelt,接着重写doGet()方法就可以快速实现我们自己的请求服务。

那么doGet()方法的背后到底发生了什么?有些同学可能会说这个问题很简单啊,就是HttpServlet做了一次封装会判断HTTP请求的类型,如果是get请求就调用doGet()方法,如果是post请求就调用doPost()方法。

我们想要的并非这种简单的回答,而是探究这背后的背后究竟发生了什么?

HelloServlet ->HttpServlet->ApplicationFilterChain -> WsFilter -> StandardWrapperValve ->StandardContextValve -> StandardHostValve -> StandardEngineValve ->CoyoteAdapter -> Http11Processor -> NioEndpoint -> ThreadPoolExecutor-> Worker -> TaskThread -> Thread -> Catalina ->Bootstrap.main()

这才是最终我们想要得到的答案,从doGet方法开始,逐步的探究它开始的地方,最终这个开始的地方在什么地方结束呢?答案无疑是Tomcat程序启动的入口main函数。只有完成了这样的一个历程,我们才能说我们彻底明白了doGet()方法,彻底明白了这背后到底发送了什么。

通过本系列博客的阅读,您将彻底的了解doGet()方法背后发生了什么,从源码的角度深入的理解Tomcat的实现机制,Tomcat中各核心组件是如何协同工作的,同时也会学习到WEB服务器设计思路。

1目标

本系列博客源码分析的目标是深入了解Tomcat中doGet方法的实现机制。本次源码分析的目标是了解Servlet。

2分析方法

首先编写测试代码,然后利用Intellij Idea的堆栈窗口、线程窗口以及单步调试功能,逐步的分析其实现思路。

前期准备工作如下:1)编写HelloServlet类。public classHelloServletextendsHttpServlet {

@Overrideprotected voiddoGet(HttpServletRequestreq, HttpServletResponse resp)throwsServletException, IOException {

resp.getWriter().write("hello");//断点位置

}

}2) web.xml中添加servlet配置。

helloServletHelloServlethelloServlet/hello

3)测试运行

浏览器地址栏输入:http://localhost:8080/hello最终页面显示结果:hello

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值