javaweb处理请求响应的重要桥梁tomcat之servlet

    这是陈东景于2021年8月26日下午16点54分原创作品,转载请标明出处!!!!   

     今天就讲讲在javaWeb项目开中,最为低调且优秀的中间件tomcat。我为什么说tomcat是最为低调但是很优秀呢。因为在javaweb开发部署中,很多程序员都是通过tomcat来部署自己的项目跑起来的,但是百分之九十九的程序员无需知道tomcat的实现原理,只需知道简单的几个配置,就能熟练的在tomcat中部署web项目,通过浏览器访问自己开发的功能呈现效果,那种见证奇迹的时刻,多么神奇,多么让你心情激动。所以在平时的面试中,我们的简历中经常有描述的架构组件大部分都包含tomcat,但是出去面试也没有多少面试官会问到tomcat的原理或者作用,最多会问一下你们项目用到哪些容器。但是在国内javaWeb开发项目中,tomcat机会是不可或缺的,所以我说tomcat是最为低调的javaweb组件之一,而且它的本身作用可能比你开发的软件更具价值。我们就庆幸它是开源免费的吧,这也是tomcat到处借机(你家服务器)生蛋,无处不在,享誉IT界的原因。

     那什么是tomcat呢。

      在javaweb项目开发中,除了tomcat,还有无数种类的容器来部署javaweb项目。比如Jetty、JBOSS、WebSphere、WebLogic,还有目前比较流行的虚拟化容器docker等等。那为什么tomcat却如此流行呢。在我7年的javaweb项目开发中,我参与的百分之九十的web项目,部署的web容器都是tomcat。两大原因:1.tomcat是免费使用的,2.tomcat非常的轻量级,占用磁盘空间小,占用内存小,处理速度却很快,吞吐量够用,也相对稳定,操作简单,运行日志容易检索,定位问题方便。我曾经也使用过WebSphere,它算是代表重量级的web容器吧,功能完善,发布流程规范,但操作繁琐,运行稳定但是消耗内存很大。最重要的一个特别是收费的而且很贵。无特殊要求,一般的IT企业不会考虑使用这种重量级的web容器。

    tomcat是Apache 软件基金会下的一个开源的,用于部署web项目的容器和中间件。扯了那么多,那tomcat用来干嘛的呢,为什么需要它。一般的初级者只知道tomcat是个容器或者一个web服务器。知道自己的单位web工程就是打包丢在tomcat,启动tomcat的start.bat 或者start.sh项目就可以跑起来了。然后通过浏览器输入URL,页面就出来了,至于为什么会这样,没多少程序员了解清楚,只知道用就完了,哈哈哈 ,我也是这么觉得的。今天就讲讲tomcat充当了一个什么角色,怎么工作的。

       如果我们开发完了一个web项目,没有web服务器。我们怎样才能访问自己代码里定义的URL呢。service里的requestMapping,给出的地址,我们如何才能访问到,项目如何启动?我们在学Java的时候说main方法是java程序的入口,但是web项目里却可以无需main方法。那程序怎么调用起来?早期,我们可通过编写servlet来处理来之浏览器的请求和相应,但是随着互联网技术的逐层分解,重构,封装技术的演进,现在代码里我们几乎看不到servlet的身影了。那它跑去哪了呢?在java的编程思想中,有一个很重要的思想就是封装。试想,在平时的开发中,如果你经常需要一种功能,你是不是想着把它封装起来,提供接口,就可以避免重复造轮子了,比如很多工具类Utils,日期类、数据库连接类、数据转换类等等,都是封装的思想,提供给后人的就是用就完了。因为以前javaweb项目都需要通过servlet去处理浏览器的请求和响应,完成代码逻辑和客户端(浏览器)的交互。那有人就想着把一块抽象出来,进行封装,就避免没必要的重复劳动。所以很多web容器就应运而生了。tomcat是其中之一,servlet是tomcat里的一个重要组成部分。它就是用来连接浏览器请求、响应和java代码之间的桥梁。所以tomcat也叫中间件。tomcat有时叫服务器,有时叫容器,有时又叫中间件。那准确的来说它叫啥呢。其实这几个都对。对于浏览器来说它是服务器,对于你的java代码来说它是容器,对于工作原理来说它是中间件。因为对于浏览器来说,作为客户端,我给你一个请求,你居然可以给我返回数据,那它是不是服务器。对于java代码来说,我是装在你里面才运行起来的,那你是不是我的容器。对于如何完成java后端逻辑与浏览器进行交互,tomcat起到了一个桥梁的作用,那它也可以成为中间件。很多人应该都不知道这个。哈哈哈。现在讲讲tomcat里最重要的功能作为桥梁的servlet。

   servlet是个什么东西。

servlet就是用来处理URL请求和响应的一段代码程序,可以进行网络连接,数据编码,解析和组装,完成客户端和服务器的交互。以前没有JSP的时候,就是通过servlet组装拼接的。想当年出来工作的时候,说JSP是java服务器页面,那时候百思不得其解,jsp是.jsp文件,在开发中它就是页面的代码,里面还有大量的html,js,css那些玩意。怎么说是java呢。和之前学的java,面向对象编程的.java,里面是一个一个类完全不是一回事。哈哈哈。真是郁闷。后来了解了servlet才理解清楚。其实JSP也是servlet组装内容的一个封装,独立出来往页面转移,也HTML融为一体。所以在java开发中无处不在的存在封装的思想。包括现在的nodeJS ,Vue,都已经开始把后端出来逻辑封装到前端的开发中了。废话不多说。讲讲servlet里面的最重要两个功能处理请求响应。

要将servlet就要讲到servlet的生命周期;

  1.tomcat运行在java虚拟机jvm上,Servlet加载到内存中

  2.jvm对servlet进行编译解析,初始化

 3 .Servlet 初始化后调用 init () 方法。

 4.Servlet 调用 service() 方法来处理客户端的请求。

 5.Servlet 调用 destroy() 方法j进行销毁,释放内存。

 6 .最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的。

这就是servlet完整的生命周期。其中第四点就是用来处理请求响应的。doGet,doPost。

servlet就是tomcat的心脏,最重要的内容之一。由于篇幅有限,tomcat里的的其他内容还没讲清楚,等以后有机会吧。希望对你们有用,原创不易,要码很多字,不喜勿喷哈。

   

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奋力向前123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值