一、Tomcat原理总结
- Tomcat需要main方法启动。
- Tomcat需要监听本机上的某个端口。
- Tomcat需要抓取此端口上来自客户端的链接并获得请求调用的方法与参数。
- Tomcat需要根据请求调用的方法,动态地加载方法所在的类,完成累的实例化并通过该实例获得需要的方法最终将请求传入方法执行。
- 将结果返回给客户端(jsp/html页面、json/xml字符串)
二、Tomcat运行原理分析
- Tomcat是运行在JVM中的一个进程。它定义为【中间件】,顾名思义,是一个在Java项目与JVM之间的中间容器。
- Web项目的本质,是一大堆的资源文件和方法。Web项目没有入口方法(main方法),,意味着Web项目中的方法不会自动运行起来。
- Web项目部署进Tomcat的webapp中的目的是很明确的,那就是希望Tomcat去调用 写好的方法去为客户端返回需要的资源和数据。
- Tomcat可以运行起来,并调用写好的方法。那么,Tomcat一定有一个main方法。
- 对于Tomcat而言,它并不知道我们会有什么样的方法,这些都只是在项目被部署进webapp下后才确定的,由此分析,必然用到了Java的反射来实现类的动态加载、实例化、获取方法、调用方法。但是我们部署到Tomcat的中的Web项目必须是按照规定好的接口来进行编写,以便进行调用
6.Tomcat如何确定调用什么方法呢。这取决于客户端的请求,http://127.0.0.1:8080/Test.Tomcat.Study/index.java?show这样的一个请求,通过http协议,在浏览器发往本机的8080端口,携带的参数show方法,包含此方法的路径为Test.Tomcat.Study,文件名为:index.java。
tomcat
|—bin:存放启动和关闭tomcat脚本
|—conf:存放不同的配置文件(server.xml和web.xml);
|—doc:存放Tomcat文档;
|—lib/japser/common:存放Tomcat运行需要的库文件(JARS);
|—logs:存放Tomcat执行时的LOG文件;
|—src:存放Tomcat的源代码;
|—webapps:Tomcat的主要Web发布目录(包括应用程序示例);
|—work:存放jsp编译后产生的class文件;
服务器端(tomcat):
1、使用SocketServer创建一个套接字连接服务。
2、监听端口号,例如这里的8080端口。
3、通过套接字服务,获取inputStream输入流,可以理解为request。
4、通过输入流(request)获取请求的信息。
5、处理获取出来的输入流信息,使用反射生成访问的处理类对象,用来调用访问的方法。
6、通过套接字得到outputStream输出流,可以理解成response,通过输出流给出响应信息。
客户端(浏览器访问):
1、使用Socket创建一个连接,访问一个路径和一个端口号,也就是用户在浏览器中输入网址的过程。
2、使用socket获取输出流,这里的输出流可以理解成request对象。
3、如果要获取发服务器响应的内容则通过,socket获取inputStream输入流,读取管道中的数据就可以。