• 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服务器的confCatalinalocahost目录下添加一个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:WindowsSystem32driversetc"目录下的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:JavaWebAppsJavaWebDemo1"/>
          </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包解压。

     

  • 相关阅读:
    rxjs 学习实践笔记
    封装localStorage、sessionStorage设置,获取,移除方法
    Angular实现类似vuex状态管理功能、全局数据管理与同步更新
    关于RxJS 处理多个Http请求 串行与并行方法
    vue插件汇总
    vue使用videojs控制后台m3u8数据请求
    NPOI winform读取Excel
    //邮件发送:
    定时任务框架Quartz.net
    系统日志控件 Log4NET
  • 原文地址:https://www.cnblogs.com/lyy-2016/p/9122208.html
Copyright © 2020-2023  润新知