一、tomcat介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014045580/article/details/72726105

一 简介

tomcat 是apache公司推出的开源免费的web-container,实现servlet&jsp规范,但是没有实现全部j2ee规范,tomcat不支持EJB。

二 tomcat目录介绍

这里写图片描述

三 环境变量和启动问题

1、bin目录下面有tomcat启动和关闭的脚本文件,.bat文件是windows脚本,.sh是linux脚本。现在以windows环境为例,运行startup.bat,访问http://localhost:8080/,看到下图说明成功了。
这里写图片描述

2、配置catalina_home环境变量,变量值是tomcat解压路径,一旦配置了catalina_home,以后startup.bat启动的就永远是catalina_home指向的tomcat。假设D盘解压了tomcat,E盘也解压了tomcat,catalina_home指向D盘的tomcat解压路径,那么即使运行E盘的tomcat/bin目录下的startup.bat其实运行的还是D盘下的tomcat,这意味着E盘tomcat的配置文件做了修改也不生效。开发时建议不要配置catalina_home变量。

四 tomcat体系结构简单说明

tomcat体系中的重要角色有server、service、connector、engine、host。它们之间的关系简要说明就是server可以有一个或者多个service,每个service下面管理着多个connector和一个engine,每个engine下面有多个host,host下面就是我们开发的web应用了。
engine:引擎负责处理其所在的sevice下面的connector接受到的所有请求,常见的有http,https连接,引擎可以设置默认host,设置了默认host的引擎如果收到的请求未指定host或者指定的host不存在则会将请求交给默认主机处理。
host:可以设置appBase指定app存放路径。

五 tomcat配置

了解了tomcat的体系结构,打开conf/server.xml文件,会看到已经配置好的server、service、connector、engine、host。
1、配置host
Host表示一个虚拟主机,并和一个服务器的网络名关联。注意Engine中必须有一个Host的名字和Engine的defaultHost属性匹配。

 <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />

 </Host>

2、配置context
context就是我们开发的web应用。
(1)在server.xml中的host标签下面配置当path=”“时,表示该目录为缺省目录;此种配置方式需要重启tomcat,事实上sever.xml文件做任何修改都需要重启tomcat才生效。

<Context path="/test" docBase="C:\news"/>

(2)$CATALINA_BASE/conf/[enginename]/[hostname]/ 目录下放置任意.xml文档,在该文档中配置context,tomcat将会把context指定的docBase映射到.xml文档名称的虚拟目录,如下,可通过a/b/xx.html访问到news下面的xx.html。该方法不需要重启服务器。ROOT.xml表示缺省应用。
a#b.xml

<Context docBase="C:\news"/>

(3)对于appBase中含有/WEB-INF/web.xml文件的任何子目录都会自动产生一个Context,不管该子目录是否在conf/server.xml文件中出现过。这个新产生的Context将会根据DefaultContext的属性值进行设置,其context path为“/目录名”。如果目录名为ROOT,那么context path为“”。

(4)事实上一个web应用对应个context,目前可以通过三种方式将Context配置信息加入到各个web应用对应的context:

$CATALINA_HOME/conf/context.xml,其中Context元素中的信息会被所有web应用程序加载,下面是默认情况下该文件的配置,所以我们在开发web应用时,所有的资源都要在web.xml中配置。

<Context>
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

$CATALINA_HOME/conf/[enginename]/[hostname]/context.xml.default,其中Context元素中的信息会被hostname主机下的所有web应用程序加载

如果通过上面的步骤没有找到,那么最后要从web应用程序的/META-INF/context.xml目录中查找,一般在改文件下配置数据源信息。

3、配置web资源
在web应用中WEB-INF/web.xml中配置管理了一个web应用的所有资源,事实上这不是全部,tomcat处理web.xml的顺序是

  • 处理$CATALINA_HOME/conf/web.xml文件
  • 处理/WEB-INF/web.xml文件

这也就是说$CATALINA_HOME/conf/web.xml中配置的资源是所有web应用所共享的。

题外话:$CATALINA_HOME/conf/web.xml配置了一个缺省servlet,这跟读取web应用静态资源息息相关,如果开发人员在WEB-INF/web.xml中配置缺省servlet,那么除非自己实现读取静态资源的方法,否则web应用中所有的静态资源将无法读取,这会在后面介绍servlet时详细介绍。

4、配置用户
$CATALINA_HOME/conf/tomcat-users.xml中可以配置tomcat用户名密码角色。

<tomcat-users>
  <role rolename="tomcat"/>
  <role rolename="role1"/>
  <user username="tomcat" password="tomcat" roles="tomcat"/>
  <user username="both" password="tomcat" roles="tomcat,role1"/>
  <user username="role1" password="tomcat" roles="role1"/>
</tomcat-users>

配置好后,重启tomcat,在首页点击manager app输入用户名密码登录后,可以看到web应用管理页面,可以关闭、开启、删除web应用。

六、访问http://localhost:8080/时,tomcat的工作流程

只是一个简图,大神看到请轻喷。

这里写图片描述

猜你喜欢

转载自blog.csdn.net/u014045580/article/details/72726105