可以不要。web的本质是客户端与服务器交换数据。
这时你要写一个服务端程序监听客户端传来的数据,于是你用java serversocket相关api写了个程序,把客户端传来的http报文-读取-解析-封装成了你自己写的一个叫httpRequest类里,(于是你发现这不就是tomcat干的事情吗,我直接拿它解析好的http报文就完事了)。
有了http报文了,你开始对报文进行业务处理,比如你要分析这个请求行里请求地址是什么(/hello),然后你要建立一套请求地址-地址对应的处理代码之间的匹配关系,比如收到/hello,就执行自己写的hello类里的hello方法,当然具体怎么样就看你怎么写了。(于是你发现这不就是servlet里的映射么,我tm干嘛不直接拿来用?)
再然后 springmvc觉得你servlet配起来太烦了,我搞个简单的给大家用用,于是springmvc的核心是一个servlet,它拦截了所有请求。(因为配置了/*到这个servlet的映射,tomcat解析完报文后任何请求都给这个servlet处理了)
所以,你可以不用servlet,但你要自己写http接收相关的网络服务器,再写一套类似于springmvc的路由,有了这两个就好了。甚至你写的很棒的话,说不定以后可以代替servlet,大家都用你这一套。
可能这就是spring webflux吧