Tomcat-配置及原理

系统 1744 0

Tomcat安装好后打开目录;可以看到如下结构:

bin :存放服务器脚本;

conf :存放配置文件;

lib :存放需要的JAR文件;

wabapps :存放需要发布的Web应用程序及其部署文件;

work :存放jsp 文件编绎生成的class文件;

logs :存放日志文件;

在conf目录下可以看到 Catalina 目录,context.xml, web.xml, server.xml 等(一些不是很重要的就不列出来了)。

server.xml 被称为Tomcat的主配置文件或全局配置文件,它完成两个任务:
1)提供Tomcat组件的初始配置
2)说明Tomcat的结构,含义, 使Tomcat通过实例化组件完成启动及构建自身。

server.xml中描述的重要元素有  Server  , Service  , Connector  , Engine  , Host  , Context  .
结构如下:
Tomcat-配置及原理
它们的用处是:

Server :
顶层元素
, 整个配置文件的根元素 , 表示整个 Servlet 容器或者 Tomcat 服务器 包含多个 Listener, 一个 GlobalNamingResources 和一个 Service

Service :
一组 Connector 和一个 Engine 的集合,这组 Connector 共用一个 Engine 来处理所有 Connector 收到的请求,负责处理 <Connector> 所获得到的客户请求

Listener组 :  
监听器,用来管理
Tomcat 生命周期和全局资源

GlobalNamingResources :
配置系统的 JNDI Java Naming and Directory Interface

Connector组 :
连接器,代表外部客户之间的接口,将在一个指定的接口上侦听客户请求,并将获得的请求交给 <Engine> 进行处理,然后把处理结果返回给客户

Engine :  
引擎,处理
<Service> 中的所有客户请求,具体来说,获得一个 <Connectors> 交给的请求后,把这个请求匹配到某个 <Host> 上进行处理,如果没有找到合适的 <Host> 来进行处理,则把这个请求交给一个默认虚拟主机处理。

Host组 :
虚拟主机,处理一个特定主机的请求,一般来说,每个虚拟主机都可以配置一个到多个 Web 应用,每个 Web 应用对应一个 <Context>,<Host> 获得的请求最终匹配到某个 <Context> 上,由它进行处理。

Context组 :  
Web
应用组,每个 Web 应用由一个或多个 Servlet 组成,当 <Context> 获得一个请求后,将映射 /conf/web.xml 文件中的 <servlet> 元素,匹配一个 Servlet 类进行处理并返回。当一个 Web 应用被初始化的时候,它将用自己的 ClassLoader 对象载入 web.xml 中定义的每个 Servlet 类。

我们启动Tomcat,在浏览器中输入:http://localhost:8080/ 会打开Tomcat的默认页面。实际上,这个页面是在Tomcat安装目录下的:/webapps/root/index.jsp;/webapps是Tomcat服务器用来存放Web应用的目录,每个Web应用都将在这建立各自的子目录,刚装好的Tomcat服务器虚拟主机的默认目录是/webapps/ROOT,所以默认会打开这个目录下的文件。流程如下:
在/conf目录下的web.xml配置文件中有如下配置:
<welcome-file-list>
               <welcome-file>index.html</welcome-file>
               <welcome-file>index.htm</welcome-file>
               <welcome-file>index.jsp</welcome-file>
</welcome-file-list>
这里正是用来配置首页的,Tomcat将按顺序找出<welcome-file>标签中的内容作为首页。而在我们的目录下,它只找到了index.jsp,所以会显示它;
但我们不能将所有的Web程序都放在ROOT里。所以我们需要更改Tomcat的虚拟目录;

设置虚拟路径 ,需要在server.xml文件的<Host></Host>中的Web应用添加一个<Context>子元素,实际上是配置了一个Web应用的物理存放地址到Tomcat虚拟路径的过程,使得Tomcat能够正确找到Web应用的物理存放路径;
步骤:
1)在server.xml的<Host></Host>中加上如下代码:
<Context docBase="D:/myApp" path="/myapp" reloadable="true"></Context>
2)我们把写好的Web应用中的所有文件放到下面的目录中:D:/myapp/test
3)重启Tomcat,在浏览器中输入:http://localhost:8080/test 即可测试

web.xml
Tomcat目录下/conf 可为不同的应用程序配置不同的上下文环境;用来对Servlet进行映射;
一个Web应用的根目录下的/WEB-INF目录中也有一个web.xml,当部署一个Web应用时,总是先加载/conf/web.xml,然后才加载自己Web应用的/WEB-INF/web.xml文件;但处理过程中,总是先使用自己的web.xml配置文件,如果无法处理,才把它交给Tomcat的web.xml文件。

当用户在浏览器中输入一个JSP文件地址:
http://localhost:8080/test/index.jsp
提交的请求最终由一个具体的Servlet来进行处理。我们请求传递的过程如下:
1)请求首先到达商品为8080的<Connector>,然后把该请求交给<Engine>引擎处理;
2)<Engine>将这个请求匹配到某个<Host>去处理,因为这里<Engine>默认处理的<Host>是localhost,所以请求传递到name属性是localhost的<Host>。
3)<Host>根据地址串中的子目录为"test",获知能够处理该请求的Servlet存放在虚拟目录为"test"的Web应用中,于是通过查找<Context>元素,找到path="test" 的<Content>,然后根据<Content>中的物理路径"docBase"的属性值查找Web应用的物理地址;
4)服务器根据对应的Web应用的“WEB_INF/web.xml”配置文件,查找能够处理index.jsp的servlet;


如上图所示:
connector负责接收客户请求,并向客户返回响应结果.在同一个service中,多个connector共享同一个Engine,同一个Engine可以有多个Host,一个Host可以有多个context;一个context对应一个web项目.在运行时,一个Tomcat会给每个context生成一个ServletContext类的实例.

Tomcat-配置及原理


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论