httpservlet实现原理

29 阅读1分钟

问题

大佬,这个月我把java和javaweb稍微学了学,今晚上你忙吗?我画个分析图您帮我看下我的思路对不对呗?

这是httpservlet的继承图

我是想知道为什么我重写了httpservlet的一个dopost方法,

就能实现接受前端发来的数据,

我本身没有调用这个方法,

那么是谁帮我调用的dopost方法呢?

我就自己找了找api代码。


下面是分析:

然后我发现,在httpservlet里面有个service方法。

service调用了protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException  方法。

这个service方法里面,调用了this.doPost方法,但是调用的并不是本类的doPost方法

而是调用了httpservlet子类重写的dopost的方法。

于是我重写的dopost方法就被调用执行。

image.png

回答

大致就是你说的。

更底层的话,是Tomcat实现了服务器套接字,然后接受客户端连接请求。

接受连接请求的时候,就会调用你文档里写的内容。

说白了,就是执行业务逻辑类。

然后,在往上的话,就是Spring,Spring其实就是封装了servlet,让servlet更好用。

总结

核心流程就是:

客户端——》服务器套接字——》servlet——》spring。

最早是没有spring的,就用servlet。

后面之所以用spring,只不过是因为spring更好用。封装了一下servlet而已。底层还是servlet。web的本质就是servlet。