JavaWeb处理请求响应的重要桥梁Tomcat之Servlet

1. 前言

因为这块的知识点离我刚开始学习的时候离得太远了,所以借别人的观点来巩固一下,以表示支持这个观点,当然有各位大神不能苟同的话,希望不吝赐教,指出本文错误,以免误人子弟,谢谢!

2. 背景

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

3. 工作中常见的容器

有tomcat、Jetty、JBOSS、WebSphere、WebLogic,还有目前比较流行的虚拟化容器docker等等。

3.1 什么是tomcat

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

3.1.1 Tomcat的优点

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

3.1.2 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。

3.2 什么是Servlet

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

3.2.1 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的心脏,最重要的内容之一。

转载于:https://blog.csdn.net/dongjing991/article/details/119932331

猜你喜欢

转载自blog.csdn.net/qq_41774102/article/details/127072729
今日推荐