最近开始做web项目了,用到的服务器是tomcat6.0.35,整理下开始学习tom猫的一些基本的东西。
首先是tomcat的基本目录:
①bin目录:存放启动和关闭tomcat的脚本文件。
②lib目录:存放tomcat自身所需要的一些jar文件。
③conf目录:tomcat的各种配置文件,server.xml是tomcat的主要配置文件,此外还有web.xml。
以下对server.xml进行下详细的分析:
?<Server>元素
?
它代表整个容器,是Tomcat实例的顶层元素。.它包含一个<Service>元素。
属性分析:
⑴port:port为指定Tomcat监听shutdown命令的端口。终止服务器运行时,必须在Tomcat服务器所在的机器上发出shutdown命令,该属性是必须的。
⑵className:指定实现org.apache.catalina.Server接口的类,默认值为org.apache.catalina.core.StandardServer。
⑶shutdown:指定终止Tomcat服务器运行时,发给Tomcat服务器的shutdown监听端口的字符串.该属性必须设置。
<Service>元素
该元素由org.apache.catalina.Service接口定义,它包含一个<Engine>元素,以及一个或多个
<Connector>,这些Connector元素共享用同一个Engine元素。
第一个<Service>处理所有直接由Tomcat服务器接收的web客户请求。
第二个<Service>处理所有由Apahce服务器转发过来的Web客户请求。
第二个<Service>处理所有由Apahce服务器转发过来的Web客户请求。
属性分析:
⑴className: 指定实现org.apahce.catalina.Service接口的类.默认为
org.apahce.catalina.core.StandardService。
⑵name:定义Service的名字。
⑵name:定义Service的名字。
<Engine>元素
每个Service元素只能有一个Engine元素.元素处理在同一个<Service>中所有<Connector>元素接收到的客
户请求.由org.apahce.catalina.Engine接口定义.
属性分析:
⑴className:指定实现Engine接口的类,默认值为StandardEngine。
⑵defaultHost:指定处理客户的默认主机名,在<Engine>中的<Host>子元素中必须定义这一主机。
⑶name:定义Engine的名字。
在<Engine>可以包含如下元素:<Logger>, <Realm>, <Value>, <Host>
⑵defaultHost:指定处理客户的默认主机名,在<Engine>中的<Host>子元素中必须定义这一主机。
⑶name:定义Engine的名字。
在<Engine>可以包含如下元素:<Logger>, <Realm>, <Value>, <Host>
<Host>元素
?它由Host接口定义。一个Engine元素可以包含多个<Host>元素。每个<Host>的元素定义了一个虚拟主机。它包含了一个或多个Web应用。
属性分析:
⑴className:指定实现Host接口的类.默认值为StandardHost。
⑵appBase:指定虚拟主机的目录,可以指定绝对目录,也可以指定相对于<CATALINA_HOME>的相对目录。如果没有此项,默认为<CATALINA_HOME>/webapps。
⑵appBase:指定虚拟主机的目录,可以指定绝对目录,也可以指定相对于<CATALINA_HOME>的相对目录。如果没有此项,默认为<CATALINA_HOME>/webapps。
⑶autoDeploy:如果此项设为true,表示Tomcat服务处于运行状态时,能够监测appBase下的文件,如果有新的web应用加入进来,会自运发布这个WEB应用。
⑷unpackWARs:如果此项设置为true,表示把WEB应用的WAR文件先展开为开放目录结构后再运行。如果设为false将直接运行为WAR文件。
⑸name:定义虚拟主机的名字。
⑹xmlValidation:
⑺xmlNamespaceAware:
在<Host>元素中可以包含如下子元素:<Logger>, <Realm>, <Value>, <Context>
?<Context>属性
它由Context接口定义,是使用最频繁的元素。每个<Context元素代表了运行在虚拟主机上的单个Web应用。一个<Host>可以包含多个<Context>元素,每个web应用有唯一的一个相对应的Context代表web应用自身。servlet容器为第一个web应用创建一个ServletContext对象。
属性分析:
⑴className:指定实现Context的类,默认为StandardContext类。
⑵path:指定访问该Web应用的URL入口。?
⑶docBase:指定Web应用的文件路径,可以给定绝对路径,也可以给定相对于<Host>的appBase属性的相对路径,如果Web应用采用开放目录结构,则指定Web应用的根目录,如果Web应用是个war文件,则指定war文件的路径。?
⑷reloadable:如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新的,服务器会自动重新加载Web应用。?
在开发阶段将reloadable属性设为true,有助于调试servlet和其它的class文件,但这样用加重服务器运行负荷,建议在Web应用的发存阶段将reloadable设为false。
⑵path:指定访问该Web应用的URL入口。?
⑶docBase:指定Web应用的文件路径,可以给定绝对路径,也可以给定相对于<Host>的appBase属性的相对路径,如果Web应用采用开放目录结构,则指定Web应用的根目录,如果Web应用是个war文件,则指定war文件的路径。?
⑷reloadable:如果这个属性设为true,tomcat服务器在运行状态下会监视在WEB-INF/classes和WEB-INF/lib目录下class文件的改动,如果监测到有class文件被更新的,服务器会自动重新加载Web应用。?
在开发阶段将reloadable属性设为true,有助于调试servlet和其它的class文件,但这样用加重服务器运行负荷,建议在Web应用的发存阶段将reloadable设为false。
在<Context>元素中可以包含如下元素<Logger>, <Realm>, <Resource>, <ResourceParams>
<Connector>元素
由Connector接口定义.<Connector>元素代表与客户程序实际交互的给件,它负责接收客户请求,以及向客
户返回响应结果.
第一个Connector元素定义了一个HTTP Connector,它通过8080端口接收HTTP请求;第二个Connector元素定义了一个JD Connector,它通过8009端口接收由其它服务器转发过来的请求。
Connector共用属性分析:
⑴className:指定实现Connector接口的类。
⑴className:指定实现Connector接口的类。
⑵redirectPort:指定转发端口。如果当前端口只支持non-SSL请求,在需要安全通信的场命,将把客户请求转发至SSL的redirectPort端口。
HttpConnector元素的属性:
⑴className:实现Connector的类。
⑵port:设定Tcp/IP端口,默认值为8080,如果把8080改成80,则只要输入http://localhost即可。因为TCP/IP的默认端口是80。
⑴className:实现Connector的类。
⑵port:设定Tcp/IP端口,默认值为8080,如果把8080改成80,则只要输入http://localhost即可。因为TCP/IP的默认端口是80。
⑶protocol:设定Http协议,默认值为HTTP/1.1。
⑷connectionTimeout:定义建立客户连接超时的时间.如果为-1,表示不限制建立客户连接的时间。
?
④logs目录:存放tomcat的日志文件。
⑤temp目录:存放tomcat运行时的临时文件。
⑥webapps目录:部署程序的存放目录,这些程序都是编译后的程序(发布到tomcat的项目里含的类,会被编译成.class后才发布过来,源文件没有发布过来,但这里的jsp没有经编译的)。
⑦work目录:存放jsp编译后产生的class文件。jsp页面会被编译成对应的servlet文件,下一次访问的时候直接运行servlet类就可以向客户端发送响应的页面了。所以说第一次访问时会比较慢,是因为新发布上去的页面在第一次访问时,会先 编译成servlet文件,所以比较慢,一旦编译好,那么除非jsp页面修改,不然下次访问直接运行servlet就可以响应用户,所以快)。
?