圣凤凌霜 发表于 2017-1-17 11:11:11

Tomcat入门(一)

 WEB站点虚拟目录
 
  server.xml
  给server.xml加中文注释导致tomcat无法启动
1.配置文件改错了
2.加了中文注释(虽然xml头部声明编码为utf-8),但是在添加中文注释的时候,编辑器如editplus使用的ANSI编码进行保存的,导致tomcat解析server.xml编码不一致!
  <Host name="localhost" appBase="webapps"/> 
将webapps指定为WEB站点的基准目录
其下的ROOT目录将默认作为根目录(如果有)
 
  本地文件系统的某个目录映射为一个WEB站点的虚拟目录

path="" 表示设置WEB站点的根目录
docBase 虚拟目录所映射的本地文件系统目录
可以使用绝对路径或者相对路径(相对于host元素的appBase所指定的目录)
<Context path="" docBase=""/>
  
设置WEB站点的虚拟子目录
  1.在server.xml文件中的<host>中配置<Context>元素
如,<Context path="/myApp" docBase="/demo"/>
  2.特殊目录下的XML文件中包含<Context>元素
如,E:\soft\apache-tomcat-6.0.39\conf\Catalina\localhost\manager.xml文件中包含的<Context>元素:
<Context antiResourceLocking="false" privileged="true" useHttpOnly="true" >
  <Valve className="org.apache.catalina.valves.RemoteAddrValve"
         allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1" />
</Context>
  3.<Host>元素的appBase属性所指向的目录("webapps"),所包含的目录中包含WEB-INF/web.xml的那些子目录
如,WEB-INF/web.xml在 webapps/demo/目录下,则以"demo"作为该WEB站点的虚拟子目录
  4.<Host>元素的appBase属性所设置的基准目录下的war文件,将以该war文件的名称作为WEB站点的虚拟目录
如,webapps/demo.war ,则该WEB站点的虚拟目录为"demo"
  
使用<Context>为1个文件系统目录设置多个虚拟目录
如webapps/demo.war
可以通过<Context>设置若干个虚拟目录
<Context path="path1" docBase="/demo.war"/>
<Context path="path2" docBase="/demo.war"/>
<Context path="path3" docBase="/demo.war"/>
   
  打war包命令
  E:\soft\apache-tomcat-6.0.39\webapps> jar  -cvf  new.war  -C  demo  .
  将webapps目录下的demo目录下的所有文件打包为war包,该war包的名称为new.war
基于主机名的WEB站点虚拟主机
 
  <host/> 表示1个WEB站点
  <Engine/>内部可以配置多个<host/>来指定多个虚拟主机

<!-- 默认主机为name="localhost"的Host -->
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase"/>
<!-- 默认主机,该主机的根目录通过appBase设置为"webapps"(相对路径:相对于tomcat目录) -->
<Host name="localhost"appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
</Host>
<!-- 虚拟主机:Virtual Machine A -->
<Host name="www.server.com"appBase="virtualMachineA"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false">
<Context path="" docBase="demo"/>
</Host>
</Engine>
   
  上面的配置,通过<Host>设置了一个新的虚拟主机
name=www.server.com指定了该虚拟主机的名称
[修改hosts文件:127.0.0.1   www.server.com]
 
appBase="VirtualMachine" 指定该虚拟主机的根目录为相对与Tomcat目录下名称为VirtualMachine的目录
 
接着,在<Host>内部,通过<Context>设置该WEB站点的根目录
path="" 表示设置WEB站点的根目录,然后通过docBase="demo"指定根目录为"demo"
这里的"demo"也是一个相对路径的写法,它是相对于appBase属性所指向的目录
即,docBase="demo" 等效于 docBase="apache-tomcat-6.0.39\virtualMachineA\demo"
【也可以使用Tomcat的默认机制,在WEB站点下直接创建ROOT目录,该目录将自动被解析为根目录,前提是没有另外设置path=""】
 
本例中的目录结构大概如下: 
apache-Tomcat
webapps
ROOT
oa.war
VirtualMachine
ROOT
index.html
demo
index.html
 
当访问http://localhost:8080/时
将打开Tomcat默认的主页,也就是webapps下的ROOT目录中的index.html
 
当访问http://www.server.com:8080/时
将打开VirtualMachine下的demo目录下的index.html

<!-- 通过1个Service标签,封装多个Connector与1个Engine,这样,Connector就有了对应的Engine匹配 -->
<Service name="Catalina">
<!-- Connector负责不同端口的监听,1个Connector监听1个端口号 -->
<Connector port="8080"/>
...
<Connector port="8009"/>
<!-- 每个Connector都需要有1个Engine进行处理 -->
<Engine name="Catalina" defaultHost="localhost">
<!-- 1个Engine下面可以配置多个Host -->
<Host name="localhost"/>
...
<Host name="www.server.com">
<!-- 1个Host中可以配置多个Context -->
<Context/>
<Context/>
<Context path="" docBase="demo"/>
</Host>
</Engine>
</Service>
页: [1]
查看完整版本: Tomcat入门(一)