web应用为什么需要tomcat容器

关于tomcat的认知

简述:

从几年开发后对tomcat的简短认识 --> 静下心来提出疑问 --> 多方面学习后的再认识

现有认识:

一句话:开源的,基于java语言开发的,部署web项目的容器;

假设:tomcat部署目录=tomcat_home=E:\tools\worktools\apache-tomcat-8.0.3;

通常一个web项目的部署包(如打好的war包),部署在tomcat_home/webapps目录,然后编辑tomcat_home/conf/server.xml文件,在标签区间内增加context标识,然后启动startup.bat脚本,项目部署完毕。

疑问:
  • 我们跑一个项目需要哪些支持?
  • tomcat解决了哪些问题?
  • tomcat优缺点?
参考资料:

https://www.cnblogs.com/f-ck-need-u/p/7717488.html

https://www.jianshu.com/p/99f34a91aefe

https://www.cnblogs.com/ranyonsue/p/5984001.html

https://baike.baidu.com/item/%E7%BD%91%E7%BB%9C%E4%B8%83%E5%B1%82%E5%8D%8F%E8%AE%AE/6056879

再认识:

我们跑一个项目需要哪些支持?

假如没有这些web容器,我们想启动一个项目,其实也只能当做一个进程来处理,基于socket通信来做。那这样子的话,互联网也只能给程序员们使用啦。我们在开发的过程中不但要定义好复杂的协议,还要处理好各种真实业务外的细节。还好的是,在tcp/ip的基础上,出现了更好的应用层协议,如http协议,这里不简述它的好处了。但是如果基于socket来支持http协议,对后端开发者来说,还是没有任何其他变化。

tomcat解决了哪些问题?

tomcat是servlet容器,它可以帮我们对接http请求(做些通用处理),然后将请求转发到我们的servlet处理器进行处理,我们只需要把自己的业务处理放在servlet的service方法即可,不需要关注其他多余的事情。

tomcat优缺点?

个人理解,tomcat的架构还是比较不错的,封装的比较好,需要我们处理的仅仅是部署自己的war包,简短的配置即可。特别是关于lib的处理,共享的lib、独享的lib、tomcat专用的lib。所谓缺点的话,在处理静态项目方面比一些其他容器没有优势(nginx、apache等)。

自己的见解:

这里仅仅是思考为什么要有个‘web容器’这个东西;如果没有,怎么玩;它在什么背景下催生;解决了什么问题;还有什么缺点;

更多可思考的东西:

  1. 里面是否有可借鉴的东西?比如前面提到的lib隔离,应该是可以学习下tomcat在这块,针对类加载器的灵活使用。
  2. java开源的项目,是不是可以通读源码,学习点什么?
  3. 是不是可以尝试造个轮子,然后再去对比tomcat的实现,提升自己在设计方面的能力?


你可能感兴趣的:(技术随笔)