在座各位老铁程序开发多年,想必Tomcat一直是都是你们的必用猫吧,在项目中配一下Tomcat,copy一份server.xml覆盖进来,就可以轻松愉快的把项目跑起来了。
但是.....
你们有没有想过Tomcat是怎么运行你们充满bug的程序的呢?server.xml里的这些垃圾配置又是什么用的呢?
下面,我附上一份花费多日呕心沥血制作而成的server.xml配置详解,费大家脑壳和钛合金眼睛仔细看看:
复制代码
通过研究上面的配置和注释,想必大家已经对这个配置的讲解理解的一塌糊涂了吧?因为密密麻麻花里胡哨的代码和汉字混杂在一起,看起来就像脑壳撞墙冒星星一样难受。
好吧,我们根据真实场景分析一下从用户在浏览器输入网址发请求到最终返回结果展示到网站这一个过程在客户端浏览器、提供web程序的服务器、Tomcat、web程序分别在哪个步骤做了什么骚操作:
- 1、用户在浏览器输出网站:http://www.xxx.com/customer/index.html
- 2、浏览器解析出域名www.xxx.com并且去请求DNS服务器,通过DNS获取相应的域名对应的IP和端口如(123.1.1.1:8099)
- 3、通过IP地址找到IP对应的服务器后,要求建立TCP连接
- 4、通讯双方连接之后,请求被发送到服务器端口8099
- 5、该端口是Tomcat中的server.xml的Connector配置port,所以此时请求被相应的Connector接收到
- 6、Connector把请求分配到它里边的Engine组件,由它来处理,并且等待其响应
- 7、Engine收到请求之后,根据请求路径匹配到相应的host,交给host处理
- 8、host匹配相对路径/customer/index.html,找到相应的context
- 9、匹配到相应context后,根据路径访问相应的servlet
- 10、根据请求构造HttpServletRequest对象和HttpServletResponse对象,并调用Servlet的doGet或doPost方法
- 11、servlet中处理逻辑之后,把HttpServletResponse对象返回给Host
- 12、host把HttpServletResponse逐级传递到Engine、Connector
- 13、最终把响应结果返回到客户端的浏览器
- 14、浏览器把结果渲染呈现
至此,一个完整的http请求完成。结合这个流程再看上面的server.xml配置,应该是一点即通了吧。
觉得本文对你有帮助?请分享给更多人
关注「编程无界」,提升装逼技能