一、Tomcat概述
1.tomcat的正确安装
* 解压apache-tomcat-6.0.35.zip,安装位置的父级目录最好不包含中文和空格.
* 双击%tomcat%/bin/startup.bat可启动tomcat,在浏览器输入 http://localhost:8080
出现tomcat欢迎页面表示安装并启动成功.
2.tomcat常见启动错误
(1)没有配置JAVA_HOME系统环境变量
* 没有配置java_home会导致双击startup.bat时看到dos窗口一闪而过,并未启动成功.
* 解决办法:在setclasspath.bat第一次使用JAVA_HOME之前的任何地方,在windows中设置JAVA_HOME环境变量,指向JDK的主目录即可.
如果打开%tomat%/bin/setclasspath.bat文件,会发现里边要求了四个必须的存在的程序.
* if not exist "%JAVA_HOME%\bin\java.exe" goto noJavaHome
* if not exist "%JAVA_HOME%\bin\javaw.exe" goto noJavaHome
* if not exist "%JAVA_HOME%\bin\jdb.exe" goto noJavaHome
* if not exist "%JAVA_HOME%\bin\javac.exe" goto noJavaHome
因此jdk的bin目录下必须有这四个程序,否则tomcat启动不成功,都会出现一闪而过的dos窗口现象.
(2)端口号被占用
* 报出异常:java.net.BindException: Address already in use: JVM_Bind <null>:8080
* 原因:有可能已经启动了tomcat服务器,再开第二个时会出现这种情况.再有就是断口号被其他程序占用了.
* 解决办法:修改断口号.
* 在%tomcat%/conf/server.xml 文件下修改3个断口号,改为未被程序使用的断口号即可.
* <Server port="8005" shutdown="SHUTDOWN">
* <Connector port="8080" protocol="HTTP/1.1"
* <Connector port="8009" protocol="AJP/1.3"
3.tomcat的目录结构
(1) bin目录:存放tomcat的启动和终止脚本
*startup.bat:启动脚本
*tomcat是用java编写的,那么其启动源码,也就是main函数在哪儿?
*bootstrap.jar 启动脚本最终执行的java程序
*main函数所在位置: org.apache.catalina.startup.Bootstrap
(2)conf目录:存放tomcat所有的配置信息的文件
*tomcat-users.xml:管理用户权限
*web.xml:手动书写web项目的web.xml
*server.xml:修改设置(修改断口、添加虚拟路径、添加虚拟主机)
(3)lib目录:存放tomcat服务器和所有web应用程序需要访问的jar文件
tomcat称为web服务器,也可称为servlet容器,在java ee的13项核心技术中,
tomcat仅实现了JSP和servlet,而jsp实质也是一个servlet,所以tomcat又被称为servlet容器.
(4)logs目录:存放tomcat的日志文件
(5)temp目录:临时文件夹
(6)webapps目录:tomcat维护的所有的web应用程序所在的目录
(7)work目录:tomcat处理JSP文件的工作目录
在此目录中存放着被jsp引擎解析jsp文件后所产生的servlet源文件与字节码文件
4.配置tomcat的管理用户
*配置文件的位置:%tomcat%/conf/tomcat-users.xml
*启动tomcat服务器,在浏览器中进入tomcat欢迎页面,左面会有Tomcat Manager选项,点击后会出现提示输入用户名密码,
由于还没有配置,所以进不去,点取消后出现401 Unauthorized错误,并提示了需要配置的内容,
把它copy到tomcat-users.xml中,修改username与password即可.
*需要配置的内容:
<!--声明当前需要的角色-->
<role rolename="manager-gui"/>
<!-- 确定当前用户的账号和密码,以及使用的角色-->
<user username="tomcat" password="s3cret" roles="manager-gui"/>
*配置完成后需要重新启动tomcat
5.web项目目录结构
web project
|--WEB-INF目录:屏蔽浏览器访问的资源目录.此目录浏览器不可见,但每个web项目必须存在.
*存放web项目的配置信息
*存放web项目依赖的jar文件
*存放当前web的源码文件生成的class文件
|--web.xml文件:web项目的配置文件
*需要配置的内容可以在 %tomcat%conf/web.xml文件下找到,拷贝根元素即可。
|--lib目录:所依赖jar文件存放的位置
|--classes目录:class文件存放的位置
二、Tomcat配置
1.配置虚拟目录
web应用开发好后,若想共外界访问,需要把web应用所在的目录讲给web服务器管理,这个过程就称为虚拟目录的映射/
(1)在%tomcat%/conf/server.xml文件的host元素中配置
*使用Context标签
*path属性:虚拟目录的名称
*dacBase属性:web应用所在的目录(里面包含WEB-INF)
*配置内容: 在<Host name="localhost" appBase="webapps">与</Host>之间添加Context内容
<Context path="/xxx" docBase="g:\oooo" />
*注意:一个Context即代表一个web应用.
*用途:扩展webapps目录管理项
(2)tomcat6中不再建议在server.xml文件中配置context元素了,因此一般都采用一下方式.
让tomcat自动映射:tomcat服务器会自动管理webapps目录下的所有web应用,并把它映射成虚拟目录.
2.配置虚拟主机
*在一个tomcat服务器中可以放置多个网站,所谓虚拟主机,就是在tomcat服务器中配置一个网站.
*本地域名(localhost)生效的原因:在系统的hosts文件中已经配置过了
windows系统中:C:\WINDOWS\system32\drivers\etc\hosts
127.0.0.1 localhost
*浏览器中输入域名之后会先访问系统的hosts文件,然后根据内容再选择是否访问dns进行解析
*IP的作用:仅负责找到需要的主机的位置
*因此想要添加一个网站,或配置一个虚拟主机可以在%tomcat%/conf/server.xml文件下进行相关配置,
*配置内容:(1) server.xml文件中有Host标签,拷贝一份,修改name(此name即浏览器中需要输入的域名), 修改appBase(即和配置虚拟目录中的docBase差不多,指定类似webapps这样的目录即可)
(2)修改系统中的hosts文件
三、Tomcat的组成结构
Tomcat本身由一系列可配置的组建构成,tomcat的各种组建都可以在server.xml中进行配置,server.xml文件的结构如下:
<Server>
<Service>
<Connector/>
<Engine>
<Host>
<Context />
</Host>
</Engine>
</Service>
</Server>
*<Server>元素:
代理整个Servlet的容器组件,是tomcat的顶层元素,可以包含多个 Service元素.
*<Service>元素:
包含一个Engine元素,以及多个Connector元素,这些Connector元素共享同一个Engine元素.
* <Connector>元素:
代表客户与服务器的实际交互组件,负责接收用户的请求及返回客户响应.
*<Engine>元素:
Engine元素,处理所有Connector元素接受到的客户请求.
*<Host>元素:
在一个Engine元素中,可以包含多个Host元素,每一个Host定义一个虚拟主机,
每一个Host也可以包含多个web应用,即Context元素.
*<Context>元素:每一个Context元素代表了一个运行在虚拟主页上的web应用.