一,简介 html
Tomcat是一个实现了JAVA EE标准的最小的WEB服务器,是Apache 软件基金会的Jakarta 项目中的一个核心项目,由Apache、Sun 和其余一些公司及我的共同开发而成。由于Tomcat 技术先进、性能稳定,并且开源免费,于是深受Java 爱好者的喜好并获得了部分软件开发商的承认,成为目前比较流行的Web 应用服务器。学习JavaWeb开发通常都使用Tomcat服务器,该服务器支持所有JSP以及Servlet规范,启动界面如图: web
Tomcat的体系结构 apache
Tomcat服务器的启动是基于一个server.xml文件的,Tomcat启动的时候首先会启动一个Server,Server里面就会启动Service,Service里面就会启动多个"Connector(链接器)",每个链接器都在等待客户机的链接,当有用户使用浏览器去访问服务器上面的web资源时,首先是链接到Connector(链接器),Connector(链接器)是不处理用户的请求的,而是将用户的请求交给一个Engine(引擎)去处理,Engine(引擎)接收到请求后就会解析用户想要访问的Host,而后将请求交给相应的Host,Host收到请求后就会解析出用户想要访问这个Host下面的哪个Web应用,一个web应用对应一个Context。 windows
完整的server.xml配置文件内容: 浏览器
<?xml version='1.0' encoding='utf-8'?> <Server port="8005" shutdown="SHUTDOWN"> <Service name="Catalina"> <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> <Connector port="8443" protocol="org.apache.coyote.http11.Http11Protocol" maxThreads="150" SSLEnabled="true" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="conf/.keystore" keystorePass="123456"/> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" /> <Engine name="Catalina" defaultHost="localhost"> <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 "%r" %s %b" /> </Host> </Engine> </Service> </Server>
二,下载和安装Tomcat服务器 tomcat
官方下载地址:http://tomcat.apache.org/ , 服务器
百度云下载(包含版本6-9):连接: https://pan.baidu.com/s/1nvspdd3 密码: quww app
解压后就可使用了 webapp
三,Tomcat目录层次结构 jsp
四,启动/测试Tomcat服务器
双击 bin 目录下的 startup.bat 文件启动Tomcat服务器
打开浏览器,输入localhost:8080,能显示以下界面表明安装成功。
五,Tomcat服务器启动常见问题
一、JAVA_HOME环境变量设置问题
要想双击bin目录下的startup.bat文件启动Tomcat服务器,首先要作的就是在windows中设置JAVA_HOME环境变量,由于Tomcat服务器的启动须要用到这个JAVA_HOME环境变量,若是windows中不存在JAVA_HOME环境变量,则Tomcat服务器是没法启动的。
二、端口占用问题
由于Tomcat服务器启动时是须要默认是使用8080端口的,若是这个8080端口被别的应用程序占用了,那么Tomcat服务器就没法正常启动,看到的现象就是"Tomcat服务器启动界面会打印出异常错误信息,而后就自动关闭了",咱们直接前往日志文件logs/catalina.xxxx-xx-xx.log,如图所示:
日志信息里面清楚的记录了Tomcat服务器的运行状况,由于8080端口被占用而没法正常启动,就会记录如上图所示的异常信息,经过查看异常信息,就可知道Tomcat服务器为何不可以正常启动了!
六,Tomcat服务器端口设置
在server.xml配置文件中的Connector节点进行的端口修改。例如:将Tomcat服务器的启动端口由默认的8080改为8081端口
Tomcat服务器启动端口默认配置
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
将Tomcat服务器启动端口修改为8081端口
<Connector port="8081" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
这样就把原来默认Tomcat默认的的8080端口改为了8081端口了,须要注意的是,一旦服务器中的*.xml文件改变了,则Tomcat服务器就必须从新启动,从新启动以后将从新读取新的配置信息。由于已经在server.xml文件中将Tomcat的启动端口修改为了8081,因此Tomcat服务器启动时就以8081端口启动了,以下图所示:
七,Tomcat服务器虚拟目录的映射方式
Web应用开发好后,若想供外界访问,须要把web应用所在目录交给web服务器管理,这个过程称之为虚似目录的映射。那么在Tomcat服务器中,如何进行虚拟目录的映射呢?总共有以下的3种方式:
1,方式一:在server.xml文件的host元素中配置
Tomcat的logs/server.xml的文件的host元素,以下图所示:
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valve.html --> <!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> --> <!-- Access log processes all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log." suffix=".txt" pattern="%h %l %u %t "%r" %s %b" /> </Host>
在<Host></Host>这对标签加上<Context path="/JavaWebApp" docBase="D:\JavaWebs" />便可将在D盘下的JavaWebs这个JavaWeb应用映射到JavaWebApp这个虚拟目录上,JavaWebApp这个虚拟目录是由Tomcat服务器管理的,JavaWebApp是一个硬盘上不存在的目录,是咱们本身随便写的一个目录,也就是虚拟的一个目录,因此称之为"虚拟目录",代码以下:
<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 "%r" %s %b" /> <Context path="/JavaWebApp" docBase="D:\JavaWebs" /> </Host>
其中,Context表示上下文,表明的就是一个JavaWeb应用,Context元素有两个属性,
path:用来配置虚似目录,必须以"/"开头。
docBase:配置此虚似目录对应着硬盘上的Web应用所在目录。
使用浏览器访问"/JavaWebApp"这个虚拟目录下的1.jsp这个web资源,访问结果以下:
注意:在Tomcat6以后中,再也不建议在server.xml文件中使用配置context元素的方式来添加虚拟目录的映射,由于每次修改server.xml文件后,Tomcat服务器就必需要从新启动后才能从新加载server.xml文件。
2,方式二:让tomcat服务器自动映射
tomcat服务器会自动管理webapps目录下的全部web应用,并把它映射成虚似目录。换句话说,tomcat服务器webapps目录中的web应用,外界能够直接访问。
例如:把D盘下的JavaWebs这个JavaWeb应用直接copy到tomcat服务器webapps目录中,以下图所示:
此时Tomcat服务器就会自动为JavaWebs这个JavaWeb应用映射一个同名的虚拟目录"/JavaWebs"
后台日志:
以下图所示:
3,方式三
在tomcat服务器的\conf\Catalina\localhost目录下添加一个以xml做为扩展名的文件,xml文件的名字能够任意取,好比JavaWebs.xml
在JavaWebs.xml文件中添加Context元素映射JavaWeb应用,代码以下:
<Context docBase="D:\JavaWebs" />
注意:在Context元素中并无指明path属性来设置虚拟目录的名称,那么"F:\JavaWebs"映射的虚拟目录名称是什么呢,就是当前正在编辑的这个xml文件的名称JavaWebs。
注意:使用这种方式映射虚拟目录的最大好处是修改了配置文件后不用重启Tomcat服务器