tomcat相关知识点

Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统并发访问用户不是很多的场合下被普遍使用。

tomcat的文件结构:

 bin:用于存放启动和关闭tomcat的可执行文件。
 lib:里面存放需要的jar包。
 conf:tomcat的各种配置文件,tomcat启动时需要读取的配置文件主要有:server.xml,web.xml,tomcat-users.xml等等。服务器的修改都要从此目录中进行。
 logs:日志文件,如果服务器出现错误,会自动记录。
 server:服务器的管理程序。
 webapps:所有的可执行的web项目都会放到此目录中。
work:tomcat把各种由jsp生成的servlet都放在了这个文件夹下,里面包含.java文件和.class文件。

 Tomcat 的配置文件由4个 xml 文件构成,context.xml、web.xml、server.xml、tomcat-users.xml 这4个文件。每个文件都有自己的功能与配置方法

Context.xml 是 Tomcat 公用的环境配置,tomcat 服务器会定时去扫描这个文件。一旦发现文件被修改(时间戳改变了),就会自动重新加载这个文件,而不需要重启服务器。

server.xml 是不可动态重加载的资源,服务器一旦启动了以后,要修改这个文件,就得重启服务器才能重新加载,而context.xml 文件则不然。

下面是context.xml文件的配置:(其他博客copy,本地打开没有这些,自己没弄过)

<Context path="/eml" docBase="eml" debug="0" reloadbale="true" privileged="true">  
       
    <WatchedResource>WEB-INF/web.xml</WatchedResource>  
       
    <WatchedResource>WEB-INF/eml.xml</WatchedResource> #监控资源文件,如果web.xml || eml.xml改变了,则自动重新加载改应用。  
       
    <Resource name="jdbc/testSiteds"   #表示指定的jndi名称  
    auth="Container"   #表示认证方式,一般为Container  
    type="javax.sql.DataSource"  
    maxActive="100"   #连接池支持的最大连接数  
    maxIdle="40"     #连接池中最多可空闲maxIdle个连接  
    maxWait="30000"   #连接池中连接用完时,新的请求等待时间,毫秒  
    username="txl"    #表示数据库用户名  
    password="123456"   #表示数据库用户的密码  
    driverClassName="com.mysql.jdbc.Driver"   #表示JDBC DRIVER  
    url="jdbc:mysql://localhost:3306/testSite" />   #表示数据库URL地址  
       
</Context>
context.xml的三个作用范围

 1. tomcat server 级别:

在$CATALINA_BASE/conf/context.xml 里配置,如果你在这个地方配置、那么这个配置文件将会被所有的webApp共享 。

2. Host 级别:

在 $CATALINA_BASE/conf/Catalina/${hostName} 里添加 context.xml,继而进行配置,这个配置将会被这个主机上的所有webapp共享。

3. web app 级别:

在 $CATALINA_BASE/conf/Catalina/${hostName} 里添加 ${webAppName}.xml,继而进行配置。

此时,path="",

webAppName 即为 path属性的值,也就是访问的虚拟目录。

另:tomcat 服务器文件中的 $CATALINA_BASE/webapps 目录下的所有文件夹都是一个应用。这个时候不需要自己动手配置,服务器默认将文件夹名映射成虚拟目录名称。还可以通过 $CATALINA_BASE/webapps/{App}/META-INF/context.xml 来配置,这个是在web应用中自己添加的,配置和其它一样。

<context> 标签是使用,

二、web.xml文件

Web应用程序描述文件,都是关于是Web应用程序的配置文件。所有Web应用的 web.xml 文件的父文件。

<web-app >
 <filter></filter> 
 <filter-mapping></filter-mapping> 
 <servlet></servlet> 
 <servlet-mapping></servlet-mapping> 
 <session-config></session-config>
 <mime-mapping></mime-mapping>
 <welcome-file-list></welcome-file-list> 
 </web-app >
<!-- 
filter 配置Servlet过滤器 
filter-name 定义过滤器的名字。当有多个过滤器时,不能同名 
filter-class 指定实现这一过滤的类,这个类负责具体的过滤事务 
--> 
<filter> 
<filter-name>SampleFilter</filter-name> 
<filter-class>mypack.SampleFilter</filter-class> 
</filter> 
 
<!-- 
filter-mapping 设定过滤器负责过滤的URL 
filter-name 过滤器名。这里的名字一定要和filter中的过滤器名匹配 
url-pattern 指定过滤器负责过滤的URL 
--> 
<filter-mapping> 
<filter-name>SampleFilter</filter-name> 
<url-pattern>*.jsp</url-pattern> 
</filter-mapping> 
 
<!-- 
servlet 配置Servlet. 
servlet-name 定义Servlet的名字 
servlet-class 指定实现这个servlet的类 
init-param 定义Servlet的初始化参数和参数值,可有多个init-param。在servlet类中通过getInitParamenter(String name)方法访问初始化参数 
load-on-startup 指定当Web应用启动时,装载Servlet的次序。 
当值为正数或零时:Servlet容器先加载数值小的servlet,再依次加载其他数值大的servlet. 
当值为负或未定义:Servlet容器将在Web客户首次访问这个servlet时加载它 
--> 
<servlet> 
<servlet-name>SampleServlet</servlet-name> 
<servlet-class>mypack.SampleServlet</servlet-class> 
<init-param> 
<param-name>initParam1</param-name> 
<param-value>2</param-value> 
</init-param> 
<load-on-startup>1</load-on-startup> 
</servlet> 
 
<!-- 
配置servlet映射(下面代码为SampleServlet指定的相对URL为"/sample": 
servlet-name 指定servlet的名字,这里的名字应该和<Servlet>元素中定义的名字匹配。 
url-pattern 指定访问这个servlet的URL。只需给出相对路径。 
--> 
<servlet-mapping> 
<servlet-name>SampleServlet</servlet-name> 
<url-pattern>/sample</url-pattern> 
</servlet-mapping> 
 
<!--配置session session用来设定HttpSession的生命周期。单位(秒)--> 
<session-config> 
<session-timeout>30</session-timeout> 
</session-config> 
 
<!--配置Welcome文件清单--> 
<welcome-file-list> 
<welcome-file>login.jsp</welcome-file> 
<welcome-file>index.htm</welcome-file> 
</welcome-file-list>

 三、server.xml文件

server.xml是对tomcat的设置,可以设置端口号,添加虚拟机这些的,是对服务器的设置

下面则是server.xml配置文件的详解:

<Server port="8005" shutdown="SHUTDOWN">
 2   <Listener className="org.apache.catalina.startup.VersionLoggerListener" />
 3   <Listener className="org.apache.catalina.security.SecurityListener" />
 4   <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" /> 
 5   <Listener className="org.apache.catalina.core.JasperListener" /> 
 6   <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" /> 
 7   <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> 
 8   <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" /> 
 9   <GlobalNamingResources> 
10   <!-- 全局命名资源,来定义一些外部访问资源,其作用是为所有引擎应用程序所引用的外部资源的定义 --!> 
11     <Resource name="UserDatabase" auth="Container" 
12               type="org.apache.catalina.UserDatabase" 
13               description="User database that can be updated and saved" 
14               factory="org.apache.catalina.users.MemoryUserDatabaseFactory" 
15               pathname="conf/tomcat-users.xml" /> 
16   </GlobalNamingResources> 
17   <!-- 定义的一个名叫“UserDatabase”的认证资源,将conf/tomcat-users.xml加载至内存中,在需要认证的时候到内存中进行认证 --> 
18   <Service name="Catalina"> 
19   <!-- # 定义Service组件,同来关联Connector和Engine,一个Engine可以对应多个Connector,每个Service中只能一个Engine --!> 
20     <Connector port="80" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> 
21     <!-- 修改HTTP/1.1的Connector监听端口为80.客户端通过浏览器访问的请求,只能通过HTTP传递给tomcat。还可以设置server与URIEncoding参数 --> 
22     <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> 
23     <Engine name="Catalina" defaultHost="test.com"> 
24     <!-- 修改当前Engine,默认主机是,www.test.com  --> 
25     <Realm className="org.apache.catalina.realm.LockOutRealm"> 
26         <Realm className="org.apache.catalina.realm.UserDatabaseRealm" 
27                resourceName="UserDatabase"/> 
28     </Realm> 
29     # Realm组件,定义对当前容器内的应用程序访问的认证,通过外部资源UserDatabase进行认证 
30       <Host name="test.com"  appBase="/web" unpackWARs="true" autoDeploy="true"> 
31       <!--  定义一个主机,域名为:test.com,应用程序的目录是/web,设置自动部署,自动解压    --> 
32         <Alias>www.test.com</Alias> 
33         <!--    定义一个别名www.test.com,类似apache的ServerAlias --> 
34         <Context path="" docBase="www/" reloadable="true" /> 
35         <!--    定义该应用程序,访问路径"",即访问www.test.com即可访问,网页目录为:相对于appBase下的www/,即/web/www,并且当该应用程序下web.xml或者类等有相关变化时,自动重载当前配置,即不用重启tomcat使部署的新应用程序生效  --> 
36         <Context path="/bbs" docBase="/web/bbs" reloadable="true" /> 
37         <!--  定义另外一个独立的应用程序(虚拟主机),访问路径为:www.test.com/bbs,该应用程序网页目录为/web/bbs   --> 
38         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/web/www/logs" 
39                prefix="www_access." suffix=".log" 
40                pattern="%h %l %u %t &quot;%r&quot; %s %b" /> 
41         <!--   定义一个Valve组件,用来记录tomcat的访问日志,日志存放目录为:/web/www/logs如果定义为相对路径则是相当于$CATALINA_HOME,并非相对于appBase,这个要注意。定义日志文件前缀为www_access.并以.log结尾,pattern定义日志内容格式,具体字段表示可以查看tomcat官方文档   --> 
42       </Host> 
43       <Host name="manager.test.com" appBase="webapps" unpackWARs="true" autoDeploy="true"> 
44       <!--   定义一个主机名为man.test.com,应用程序目录是$CATALINA_HOME/webapps,自动解压,自动部署   --> 
45         <Valve className="org.apache.catalina.valves.RemoteAddrValve" allow="172.16.100.*" /> 
46         <!--   定义远程地址访问策略,仅允许172.16.100.*网段访问该主机,其他的将被拒绝访问  --> 
47         <Valve className="org.apache.catalina.valves.AccessLogValve" directory="/web/bbs/logs" 
48                prefix="bbs_access." suffix=".log" 
49                pattern="%h %l %u %t &quot;%r&quot; %s %b" /> 
50         <!--   定义该主机的访问日志      --> 
51       </Host> 
52     </Engine> 
53   </Service> 
54 </Server>
原文地址:https://www.cnblogs.com/zouhong/p/11765547.html