大家好,我是晓码。曾经一个半桶水的厨子,现在已经转行做Java Web开发了。接下来我就用做厨子的经历跟大家分享下我对接触过的Java Web类型的项目的认识。
最初我接触的Java Web项目是基于Servlet/JSP架构的,如图2-1,这让我想起了早期在厨子学校培训的一段经历。那时候学校旁边有个娱乐休闲场所,里面有很多小吃铺,生意异常火爆。后来因为疫情原因,限制吃货进入,不过里面生意照做。吃货只需要在场所入口使唤广场跑腿的就行。这里,吃货叫餐可当作浏览器客户端发出页面请求,广场就是Web容器,也就是这里的Tomcat,跑腿的小哥是Tomcat的后台线程,当接收到web请求后,会基于web应用的部署描述信息找到能处理请求的servlet组件,这里的部署描述信息来源于配置的传统的XML格式的web.xml或者基于Servlet3.0规范的注解甚至更灵活的Java Config的配置形式,可以理解为每个餐馆(web应用)在广场中注册的店面信息(web部署描述符),这样广场开放时(Web容器启动时),每个店面也会做一些开业的准备工作(完成web应用中随着web容器启动而加载的一些组件的初始化,比如Servlet组件)。Servlet可理解为店面接单的负责人,他会将请求继续传达到后厨,也就是后台服务层的组件,比如负责炒菜的厨子(Service组件),再往下是负责择菜、清洗食材的后勤人员(Bo组件),下面是负责采购和配送的人员(Dao层组件),而最底层自然是食材储藏室(也就是数据库)。除了吃货下单(客户端请求获取页面数据),还有吃货办理店面会员(用户注册)、供应商来送菜(数据入库)、食品监管部门来检查(数据更新)等等其他web请求。当然因为疫情期间这些请求在到达广场后都是由广场跑腿的接管了。
图2-1
我也在这个广场某个店面的后厨做过一阵子厨子,因为我们当时都还没毕业,只是店铺老板临时请的雇工,不审查资质,也因此我经常准备起锅烧油炒菜时,给我安排的择菜洗菜的小弟,不知道跑哪个角落抽烟去了,真急的我直跺脚,头顶跟着热锅一起冒青烟。现在回忆起来,联想到图2-1中的后台组件,都是临时new出来的实例,并且自己设置的依赖对象,经常因为粗心忘记给调用处设置必要的依赖,甚至是new出多余的对象,还记得有一次老板闹了个笑话,给我一下安排了两个打下手的。
还有一个我一直想吐槽的,负责人经常跟我说客人要吃甜辣的或者酸爽的或者什么菜系的,具体有哪些食材没有指定,导致我经常做出一锅炖或者炒个大杂烩,对自己的厨艺也越来越没有信心了。这不由得让我想到写JSP页面,后台Service组件中将逻辑不相干的数据在一个方法里一起处理返回给JSP页面要绑定的数据模型。为了保住这份工作我只能忍气吞声的默默的干着。。。
好了,晓码一次杜撰出这么多故事情节来帮助新手理解Java Web软件架构模型也够累了😂😂😂下回继续后续的分享。