• java学习day29-Tomcat的使用


    服务器概述

    什么是服务器?

    服务器:分为服务器硬件 和 服务器软件。在硬件服务器(计算机)上安装了服务器软件,才可以对外提供服务。

    比如:让其他的计算机来访问当前服务器,为其他的计算机提供服务。

    (1) 服务器硬件:是指在互联网上具有独立IP地址的计算机,比如我们自己用的计算机也可以作为服务器使用。

    (2) 服务器软件:就是一个计算机程序,比如MySQL服务器软件,tomcat服务器软件。服务器软件分为很多类型,比如:ftp服务器,数据库服务器,web服务器软件,邮件服务器等。

    什么是Web服务器?

    (1) web服务器是指驻留在互联网上的某种类型的计算机程序。当浏览器访问服务器,请求服务器上的文件时,服务器将会处理该请求,并将请求的文件响应给浏览器,并会附带一些信息告诉浏览器如何查看该文件(即文件的类型)

    (2) web服务器是可以向 "发出请求的浏览器提供文档" 的程序,比如在访问百度时,其实就是在访问百度的服务器。

    tomcat就是一个web服务器软件,是由apache组织提供的一款服务器软件,特点:小巧灵活,免费开源,简单易用。

    tomcat下载、安装、启动、配置

    下载tomcat服务器

    下载地址:http://tomcat.apache.org/

    tomcat有很多版本,有解压版 和 安装版,还分windows (还分为32位和64位版)和
    linux版,根据自己的需求,选择对应的版本下载。

    tomcat服务器运行需要jdk的支持(tomcat是由java语言开发的),版本对应为:

    tomcat5 需要jdk4以上支持
    tomcat6 需要jdk5以上支持
    tomcat7 需要jdk6以上支持
    tomcat8 需要jdk7以上支持
    

    安装、启动tomcat服务器

    1、安装tomcat服务器

    绿色版解压之后就可以使用(原则:安装的路径中不要包含中文和空格)

    解压后还需要配置JAVA_HOME环境变量,该变量指向jdk的根目录,指定tomcat启动时使用哪一个位置的jdk。

    如何配置JAVA_HOME环境变量:

    变量名: JAVA_HOME

    变量值: C:Program FilesJavajdk1.8.0_45

    2、启动tomcat服务器

    启动、关闭tomcat服务器:

    通过 [tomcat根目录]/bin/startup.bat 可以启动tomcat服务器;

    通过 [tomcat根目录]/bin/shutdown.bat 可以关闭tomcat服务器;

    访问测试服务器:

    在tomcat服务器启动后,服务器会默认监听8080端口,可以通过如下地址访问tomcat服务器的主页:

    http://localhost:8080
    

    修改tomcat默认端口

    image-20200218164109285

    tomcat服务器在启动时,默认监听的端口是8080,这意味着,我们在访问tomcat服务器时,需要在主机名(localhost)或者IP地址(127.0.0.1)等后面加上端口。这样非常不方便。

    可以将8080端口改为80端口,因为80端口非常特殊,可以省略不写(只有80端口可以省略,其他端口可在访问时必须得加上)

    修改方法:找到 [tomcat安装目录]/conf/server.xml 文件并打开该文件,将文件中的 69 行的 <Connector> 标签上的 port 属性的值改为 80即可。

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

    改完后,保存文件,重新启动服务器(只有在服务器启动时,才会重新加载server.xml文件)再次启动的服务器就会监听新的端口。

    image-20200218164951343

    扩展问题:端口占用问题:

    在启动tomcat服务器时,可能会遇到端口占用问题,如下图:

    原因分析:

    情况一:可能是之前的tomcat服务器没有完全关闭,仍然在占用8080(或80)端口,导致服务器再次启动时,启动失败。

    解决方式:运行shutdown.bat文件,将tomcat按照正常流程再关闭一次即可。再次启动服务器,如果成功,则说明问题已解决,否则看情况二。

    情况二:可能是其他程序占用了8080(或80)端口,导致服务器启动失败。

    解决方式:打开一个cmd窗口,通过 netstat -ano 命令查看当前系统中活动的进程,找到8080(或80)端口对应的进程编号(PID),根据进程编号将进程结束即可!

    netstat -ano
    
    协议  本地地址         外部地址        状态           PID
    TCP  0.0.0.0:8080      0.0.0.0:0      LISTENING     6520
    TCP  0.0.0.0:135     0.0.0.0:0      LISTENING     448
    ...
    
    taskkill /f /pid 6520
    

    tomcat目录结构

    tomcat目录结构介绍

    tomcat服务器安装根目录下有很多子目录,这些目录的作用是:

    bin:用于存放tomcat服务器中批处理文件的目录(xx.bat/xx.sh)
    conf:用于存放tomcat服务器中的配置文件的目录(其中server.xml文件是tomcat服务器中非常重要的一个文件。)
    lib:用于存放tomcat服务器运行时所依赖的jar包。
    logs:用于存放tomcat服务器运行时产生的日志文件(启动tomcat服务器时会打印很多日志信息,这些日志信息还会以文件形式保存到logs目录下)
    temp:用于存放tomcat服务器产生的临时文件,tomcat会自己清理,可以忽略该目录
    
    webapps:是localhost【虚拟主机】默认管理的目录,将开发好的【web应用】程序放在webapps目录下,就可以通过浏览器访问localhost主机中的Web资源文件了。
    可以简单的理解为:webapps目录就是web资源(html、css、js、图片、jsp等)的存放目录,将web资源文件放在该目录下,就可以通过浏览器来访问。
    
    work:用于存放tomcat服务器产生的工作文件(JSP翻译后的Servlet文件会放在work目录下;session对象序列化后产生的文件也会放在work目录下;)
    

    虚拟主机和Web应用

    image-20200328095145558

    总结:

    (1)虚拟主机就是tomcat服务器中配置的一个站点,在tomcat服务器中默认提供了一个localhost虚拟主机,这个主机的发布目录是webapps目录:

    image-20200513155211940

    这样意味着,将Web应用放在webapps目录下,就表示发布到了localhost虚拟主机中。

    (2)Web应用就是一个存放了很多Web资源(html、css、js、jsp、servlet、图片等)的目录,将Web应用发布到虚拟主机中,就可以通过浏览器来访问Web应用中的这些资源文件了。

    tomcat中配置多个虚拟主机

    <Engine name="Catalina" defaultHost="wwww.aaa.com">  
        <Host name="www.aaa.com" appBase="webapps_1" autoDeploy="true" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">  
          <Alias>aaa.com</Alias>              
          <Context path="/" docBase="./war/aaa.war" reloadable="true" />  
        </Host>  
        <Host name="www.bbb.com" appBase="webapps_2" autoDeploy="true" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">  
          <Context path="/" docBase="./war/bbb.war" reloadable="true" />  
        </Host>  
        <Host name="www.ccc.com" appBase="webapps_3" autoDeploy="true" unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">  
          <Context path="/" docBase="./war/ccc.war" reloadable="true" />  
        </Host>  
    </Engine> 
    

    web应用

    web应用的目录结构

    news(目录,web应用)
      |-- 其他目录, 放在news根目录或者其他目录中的资源文件,浏览器可以直接访问
      |-- WEB-INF目录, 放在这个目录下的资源文件是受保护的,浏览器不能直接访问(不是不能访问,是不能直接访问) 
      		 |-- classes目录, 用于存放编译后的class文件
      		 |-- lib目录, 用于存放web应用所依赖的jar包
      		 |-- web.xml文件, 用于存放和web应用相关的一些配置(配置Servlet、配置主页、配置session的超时时间等)
    

    其中news就是一个目录, 同时也是一个web应用程序, 其中可以包含很多的资源文件。

    部署web应用到虚拟主机中

    直接将Web应用的目录拷贝到虚拟主机所管理的目录下,就发布到了虚拟主机中

    例如:将news目录拷贝webapps目录下,由于webapps目录是localhost主机默认管理的目录,所以就相当于将news应用发布到 了localhost主机中。

    通过如下路径规则就可以访问localhost主机下的news应用下的资源文件:

    http://localhost:端口/news/xxx
    

    扩展内容(了解)

    哔哩哔哩视频链接:https://www.bilibili.com/video/BV1Hg4y1B7dr

    访问tomcat服务器主页:http://localhost

    访问news/hello.html:http://localhost/news/hello.html

    能否将访问 news/hello.html 的路径缩短一些(比如只通过主机名就可以访问news/hello.html这个网页)

    配置WEB应用的主页

    如果没有将 hello.html 配置为当前Web应用的主页,在访问 hello.html 时的路径为:

    http://localhost/news/hello.html
    

    如果将 hello.html 配置为当前Web应用的主页,再次访问 hello.html 时的路径为:

    http://localhost/news
    

    在上的路径中,/hello.html 这个路径可以加,也可以省略。

    将 hello.html 配置为当前应用的主页,方式为:找到 [当前Web应用]/WEB-INF/web.xml文件并打开,在web.xml文件的根标签内部添加如下配置:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                          http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
      version="3.1">
      	<welcome-file-list>
    			<welcome-file>/hello.html</welcome-file>
    			<welcome-file>/hello1.html</welcome-file>
    			<welcome-file>/hello2.html</welcome-file>
      	</welcome-file-list>
    
    </web-app>
    

    配置完后,需要重启服务器,配置才会生效。

    配置缺省的(默认的)WEB应用

    上面已经将news/hello.html配置为news应用的主页,访问hello.html时路径为:http://localhost/news/

    如果不将 news 应用配置为默认的Web应用,在访问 news 下的 hello.html(主页)时的访问路径为:

    http://localhost/news/
    

    如果将 news 应用配置为缺省的(默认的)Web应用,在访问 hello.html(主页)时的路径就变成了:

    http://localhost/
    

    如何将 news 配置为缺省的(默认的)Web应用(缺省Web应用只能有一个)?:

    将Web应用的名字改为一个大写的ROOT,当前Web应用就是一个默认的Web应用,再访问这个Web应用下的资源文件时,访问的路径中就可以不用写Web应用的名称了。

    打war包

    war包和jar包都是java程序中的一种压缩包格式,如果开发一个Java基础工程,可以将其中编译后的class文件和相关的配置文件打成一个jar包。

    可以将一个Web应用打成一个war包,这样做的好处有:

    (1) 将web应用打成一个war包,传输起来更加方便,而且文件体积会变小。
    (2) 将war包发布到服务器中,服务器能识别war包格式,会自动将war包解压发布!
    

    打war包的方法是:

    进入到web应用的目录下,将Web应用目录下的所有子目录和文件全部选中,右键压缩成一个 xxx.zip 包,再把 xxx.zip 改为 xxx.war即可!!

    需要注意的是,如果有以下问题,可能会导致war不会自动解压:

    (1) 在将Web应用打成一个压缩包时,没有打成一个 xxx.zip,而是使用 rar格式或者其他格式,会导致自动解压失败!
    (2) 打成的war包的名字 和 已发布的web应用的名字不能冲突,会导致自动解压失败!
    (3) war包中包含的目录名和文件名是中文的,也会导致自动解压失败!
    
  • 相关阅读:
    华为交换机端口安全
    华为路由交换命令收集
    Java使用JodaTime处理时间
    Java遍历Map对象的四种方式
    zabbix-2.4.8-1添加MySQL状态监控
    zabbix-2.4.8-1添加tcp状态监控
    zabbix-2.4.8-1添加nginx状态监控
    我的第四个Python小程序
    我的第三个Python小程序
    我的第二个Python小程序
  • 原文地址:https://www.cnblogs.com/liqbk/p/13080701.html
Copyright © 2020-2023  润新知