中兴事件在网上也是沸沸扬扬,各家观点也是百花齐放、骂声居多。但科技这种东西,并不是三言两语就能说清的,相信国内很好公司都在技术升级与技术研发上花费了大量的人力物力财力。不能只看到结果就说谁谁谁不好某某某好,曲折的过程也是令人感动的,有句话说的好——事非亲历不知难。
我的QQ邮箱里订阅了开源中国(no-reply@oschina.net),今天上班(2018-05-02)看到很好邮件(之前没怎么看过,看过也没怎么细想过),有说到“封杀中兴”后,MySQL 等开源项目也被“闭源”怎么办?这个话题,文章内容好坏暂且不提,我本人是有部分感受的。
我从事JavaWeb开发已有3年多,3年来个人的工作经历可以让人有很多想法,如这段代码为什么执行效率高、为什么这个接口要这样定义、这个业务功能怎么实现好一些、这个方法使用递归了还有其它办法优化吗、用户会这样使用吗等等与代码相关或无关的想法,其中关于我们使用的工具我想说的是tomcat。
- tomcat 搞JavaWeb开发的没有不知道tomcat的,它是一个服务器,能提供http服务,大部分的开发人员只是简单地使用它或稍微地修改一下配置。不知道有多少人会考虑一下"它是怎么实现的?",这个范围有点大,可以细分为如下但不仅限于如下:
- 它是怎么接收请求的?
- 它是怎么映射到业务Servlet上的?
- 它是怎么封装HttpServletRequest及HttpServletResponse的?
- ...
第一个问题和Http有关,想了解的话必须得了解Http请求及响应等基本知识。 第二个问题是个逻辑处理了。 第三个问题,HttpServletRequest是一个接口无法实例化的,但是tomcat是以怎样的一种方式把它处理的?
说到底还是一句话,怎么自己实现一个tomcat。tomcat源码在官方有提供,不知道国内是不是有公司愿意花时间去自行研究一个和它类似的工具,万一tomcat闭源了呢。
- Spring 搞JavaWeb的更没有人不知道Spring的大名。Spring家族中我们常见的是有aop、ioc、SpringMVC,spring-jms/spring-jdbc/spring-context等就不用说了,不太了解也能完成开发工作的。SpringMVC是一个优秀的MVC框架,它接收业务请求并把请求分配到具体的控制器上,我曾使用过webwork或Struts2,但使用SpringMVC后真想大呼过瘾,使用注解竟然可以这么简单繁琐的配置!不过在几个项目中使用之后就难免考虑一下它是怎么实现的,简单说就是对Servlet的一个封装、根据注解找到请求对应的控制层、使用反射调用真正业务、等等等等。
随手而写,也为了记录一下。顺便附上自己实现的简易tomcat——tiny-tomcat,可访问到页面,但未完成。