Tomcat 服务器

一 Tomcat服务器端口的配置

首先看一下Tomcat的目录结构以及每个目录的主要作用 
Capture2.PNG-344.3kB 
Tomcat的所有配置都放在了conf文件夹中,里面的server.xml是配置的核心文件。 
如果想要修改Tomcat的默认启动端口,可以修改server.xml的Connect配置的port属性。

<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

注意,一旦修改了conf的.xml文件,就要重启tomcat,访问Tomcat服务器时也要以新的访问端口去访问。 
Capture3.PNG-24.8kB 
bin目录下的这两个负责启动和关闭tomcat服务器

 

二 Tomcat服务器虚拟目录的映射方式

web应用开发好之后,若想提供给外界访问,需要将web应用所在目录交给web服务器管理,这个过程就叫虚拟目录的映射。Tomcat有以下几种映射方式:

 方式一:在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 &quot;%r&quot; %s %b" />

      </Host>

在Host标签下添加Context标签,如:

<Host name="localhost"  appBase="webapps"
     unpackWARs="true" autoDeploy="true"
     xmlValidation="false" xmlNamespaceAware="false">

          <Context path="/JavaWebApp" docBase="F:\JavaWebDemoProject" />
 </Host>

这样就可以将F盘下的JavaWebDemoProject项目映射到JavaWebApp这个虚拟目录上,JavaWebApp这个虚拟目录是由Tomcat服务器管理的,它本身是一个硬盘上不存在的目录,也就是一个虚拟目录。其中,Context表示上下文,代表的就是一个javaWeb应用,context有两个属性: 
1.path: 用来配置虚拟目录,必须以"/"开头 
2.docBase: 配置此虚拟目录对应着硬盘上Web应用所在目录 
Capture4.PNG-54.8kB 
这里访问/JavaWebApp/1.jsp就相当于访问F:/JavaWebDemoProject/1.jsp 
注意,Tomcat6以后就不在建议通过这种方式来添加虚拟目录的映射,因为每次修改server.xml之后都要重启tomcat服务器来加载server.xml文件。

方式二:Tomcat服务器自动映射

Tomcat服务器会自动管理webapps目录下的所有web应用,并把它映射成虚拟目录。也就是说,tomcat服务器的webapps目录下的所有web应用,外界可以直接访问。 
因此可以直接将F盘下的JavaWebDemoProject这个应用copy到tomcat服务器的webapps目录下即可。如图: 
Capture5.PNG-14.2kB 
这时Tomcat服务器就会自动为JavaWebDemoProject这个应用映射一个同名的虚拟目录"/JavaWebDemoProject",然后你就可以用浏览器访问这个资源了,如图: 
Capture6.PNG-69.6kB

方式三:添加配置文件

在Tomcat服务器的\conf\Catalina\locahost目录下添加一个xml文件,虚拟目录的名称就是该xml文件名。 
之前在方法一中Context元素的path属性跟这里的xml文件名的作用是一样的。如: 
Capture7.PNG-8.4kB 
在aa.xml文件中添加Context元素映射JavaWeb应用,代码如下:

<Context docBase="F:\JavaWebDemoProject" /> //在aa.xml中就不用path属性了

访问地址:http://localhost:8080/aa/1.jsp 
使用这种方式的好处是修改了配置文件之后不用重启Tomcat服务器,Tomcat服务器会自动加载配置文件。

 

三 Tomcat服务器配置虚拟主机

配置虚拟主机其实就是配置一个网站。只需要修改conf文件下的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 &quot;%r&quot; %s %b" />

</Host>

这个配文件中的name="localhost"其实就是定义了一个name为localhost的虚拟主机,这台虚拟主机管理webapps文件夹下的所有web应用,这样我们就可以通过"http://localhost:端口号/JavaWebAppName"来访问了。如果使用如下的方式配置一个虚拟主机:

<Host name="www.gacl.cn" appBase="F:\JavaWebApps">
</Host>

也就是说,配置了一个name为"www.gacl.cn"的虚拟主机,该虚拟主机管理着F:\JavaWebApps下的所有web应用。要想访问"http://www.gacl.cn:端口号/JavaWebAppName",还需要在windows系统中注册"www.gacl.cn"这个域名

 

windows系统中注册域名

配置的主机要想通过域名被外部访问,必须在DNS服务器或windows系统中注册访问网站时使用的域名。 
找到"C:\Windows\System32\drivers\etc"目录下的hosts文件,如下图所示: 
Capture8.PNG-12.6kB
将新添加的网站的域名和IP地址绑定在一起,那么我们在浏览器中使用www.gacl.cn这个域名来访问虚拟主机管理的那些web应用了。 
Capture9.PNG-22.2kB

这样就可以访问了。 
Capture10.PNG-56.9kB

 

四 浏览器与服务器交互

当我们在浏览器的地址栏中输入URL地址,如"http://www.gacl.cn:8080/JavaWebDemo1/1.jsp"去访问服务器上的1.jsp事,服务器和浏览器都做了什么呢,我们又是怎样看到1.jsp这个web资源里的内容的呢? 
整个交互过程如下: 
1. 浏览器根据主机名"www.gacl.cn"去操作系统的hosts文件查找主机名对应的IP地址; 
2. 如果没找到,就去互联网上DNS服务器上查找"www.gacl.cn"这台主机对应的IP地址; 
3. 找到这台主机对应的IP地址后,就用IP地址连接到Web服务器; 
4. 浏览器连接到Web服务器后,就使用http协议向服务器发送请求,发送请求的过程中,浏览器会向Web服务器以stream的形式传输数据,告诉web服务器要访问里面的哪个web应用下的web资源,如下图所示: 
Capture11.PNG-13.9kB 
这个就是浏览器向web服务器发送请求时传输的数据: 
GET /JavaWebDemo1/1.jsp:浏览器以get的方式向服务器发送请求,请求的是avaWebDemo1里的1.jsp这个Web资源。 
Host: www.gacl.cn:8080: 访问的是www.gacl.cn对应的IP地址,和8080端口。 
5. 浏览器做完上面4步之后,开始等待,等待web服务器把自己想要访问的1.jsp这个资源传输给它; 
6. 服务器接收到浏览器传输的数据之后,开始进行解析,将读到的内容再以stream的形式传输给浏览器,如图: 
Capture12.PNG-6.5kB 
HTTP/1.1 200 OK:使用的HTTP协议1.1的版本,200表示请求成功 
这个就是Web服务器传输给浏览器的数据。 
7. 浏览器拿到服务器传输给它的数据后,将数据展现出来,如图: 
Capture13.PNG-58.5kB

 

五 Tomcat的体系结构

JavaWeb学习总结 三 ——Tomcat服务器学习和使用 二    孤傲苍狼   博客园.png-57.7kB 
Tomcat服务器的启动是基于server.xml这个文件的,Tomcat启动时先启动一个Server,Server里就会启动Service,Service里启动多个Conntector(连接器),每一个连接器都在等待客户机的连接,当有用户使用浏览器去访问服务器上的web资源时,首先是连接到Connector,Connector是不处理用户请求的,而是将用户请求直接交给Engine(引擎)去处理,Engine接收到请求后就会解析到用户想要访问的Host,然后将请求交给相应的Host,Host收到请求后就会解析用户想要访问这个Host下面的哪一个web应用,一个web应用对应了一个Context。 
整个的过程跟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 &quot;%r&quot; %s %b" />
      </Host>
      <Host name="www.gacl.cn" appBase="F:\JavaWebApps">
        <Context path="" docBase="F:\JavaWebApps\JavaWebDemo1"/>
      </Host>

    </Engine>
  </Service>
</Server>

 

六 JavaWeb应用的组成结构

一个JavaWeb项目,不同类型的文件有严格的存放规则,否则不仅可能会使web应用无法访问,还会导致web服务器启动报错。 
Capture14.PNG-33kB

WebRoot:web应用所在目录,一般情况下虚拟目录要配置到此文件夹当中。 
WEB-INF:此文件夹必须位于WebRoot文件夹里面,而且必须以这样的形式去命名,字母都要大写。 
web.xml:配置文件,有格式要求,此文件必须以这样的形式去命名,并且必须放置到WEB-INF文件夹中。

 

七 项目打包

JAVA中使用jar命令将项目打包成一个war包,具体的使用方法如下: 
Capture15.PNG-36.5kB
如,将JavaWebDemoProject这个JavaWeb应用打包成war包 
Capture16.PNG-55.3kB
执行完之后,会得到JavaWebDemoProject.war文件,然后将这个war包放到Tomcat服务器的webapps目录下,当服务器启动时,就会自动将该目录下的war包解压。

 

 

posted @ 2018-06-01 16:18  LittleMoon  阅读(224)  评论(0编辑  收藏  举报