tomcat_4_new

Engine和Host和Context三个已经是开始到应用层面的配置了,是Container级别。
之所以是三级,是从实际开发需求来设定的。要了解清楚的话,那就必须要知道Host的概念了,指虚拟主机。虚拟主机是一种在一个web服务器上服务多个域名的机制,对每个域名而言,都好象独享了整个主机。基于名字的虚拟主机可以被建立在任何web服务器上,建立的方法就是通过在域名服务器(DNS)上建立IP地址的别名,并且告诉web服务器把去往不同域名的请求分发到相应的网页目录。(引用)

这样我们就至少知道了,一个web服务器是可以有多个域名的,也就是多个Host了。你可以去测试,原本是只有一个host,名字是localhost,你可以添加一个Host,指定一个名字。拿这个名字去IE上面测试。

说具体些吧。网络的数据传输是基于IP的,也就是那个Connector会接收到有发向本机IP的数据,然而呢,又由于虚拟主机的机制存在,一个IP可以有多个域名,但是呢,这些域名又都是一个IP,都是通过Connector接收到,Connector处理成请求,就都交给Engine。

到了Engine,就要拆开Http请求包看请求资源的url了。
假如你设置了两个Host,一个localhost,一个www.test.com。
请求资源的url:
http://localhost:8080/foo/index.jsp
http://www.test.com:8080/foo/index.jsp
这两个请求包都会到Engine下,因为它们是同一个IP。Engine解析url,会把第一个请求包交给localhost的Host处理,把第二个交给www.test.com的Host处理。Engine有一个属性defaultHost,标识默认的虚拟主机名字,也就是说下面定义的Host必须有一个和这个值一样。Host有一个属性appBase,是这个Host下的所有app项目的存放目录。交给这个Host也就是意味着到了这个目录下了。locahost的Host的一般是webapps了。

这样就需要知道Context了,应该已经知道Context是什么了吧,就是一个web项目了,里面有path和docBase属性。比如上面申请的是foo,于是就到了webapps/foo的目录下了。再下面就是index.jsp了,所以,一般的jsp和html文件都直接放在项目的主目录下,比如foo下。都是可以直接通过url申请到的资源,当不想让url申请到的页面资源可以放到WEBINF目录下,放到其他的目录都可以通过url申请到,tomcat是不可以对WEBINF目录下资源进行url申请的。

这样就大致清楚了全部的框架了吧,一个Service表示一类问题解决方案,主要是为tomcat配置的,Engine就开始是容器了,它自身是顶级容器,接受所有的Http请求。是Service传给它的,通过实质的Connector来传的。Engine就开始读Http包头了,取出请求资源的url,来定位不同的Host,再把请求交给相应的Host,Host交给相应的Context来处理。

于是客户端的对某个web项目的请求就正确的递交给了某个项目了。接下来就是web项目的事情了。也就是web项目如何保证正确的处理消息呢?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值