tomcat事理剖析与大略实现:1.tomcat实际是运行在jvm中的一个进程。我们把它定义为【中间件】,顾名思义,他是一个在java项目与jvm之间的中间容器。
我们的web项目没有入口方法(main方法),那么他是如何运行起来并为客户端返回数据的呢?
2.web项目[就javaee而讲]的实质,是一大堆的资源文件和方法。个中没有main方法,意味着web项目中的方法不会自动运行起来。
3.这样,我们想想也知道,我们把web项目支配进tomcat的webapp中的目的是很明确的,那便是希望tomcat去调用我们
写好的方法去为客户端返回须要的资源和数据。
4.tomcat可以运行起来,并调用我们写好的方法。那么,tomcat一定有一个main方法。
5.对付tomcat而言,它并不知道我们会有什么样的方法,这些都只是在项目被支配进webapp下后才确定的,由此剖析,
一定用到了java的反射来实现类的动态加载、实例化、获取方法、调用方法。
6.那么tomcat如何确定调用什么方法呢。这取却于客户真个要求,举个栗子:
【https://127.0.0.1:8080/a/b/c.htm?a=1&b=2】这样的一个要求,通过http协议,利用GET方法在浏览器发往本机的8080端口,
携带的参数包含两部分a.方法,包含此方法的路径【/a/b/c.htm】,这里的方法为c,以htm标注,/a/b代表路径
这样可以许可在不同路径下存在同名方法,更可以唯一定位一个方法。b.参数,包含参数名和参数值【a=1&b=2】
通过这样的方法,要调用哪个方法,以及须要什么参数,我们的tomcat一览无余。
7.综上所述,我们有下面的总结:
a.tomcat须要main方法启动。
b.tomcat须要监听本机上的某个端口。
c.tomcat须要抓取此端口上来自客户真个链接并得到要求调用的方法与参数。
d.tomcat须要根据要求调用的方法,动态地加载方法所在的类,完成累的实例化并通过该实例得到须要的方法终极将要求
传入方法实行。
e.将结果返回给客户端(jsp/html页面、json/xml字符串)。