Skip to content

Tomcat

课程介绍

案例目标

  • 使用 Tomcat 和 Servlet 技术,制作一个支持外部访问的服务

概念介绍

软件架构

架构概述

软件架构是一系列相关的抽象模式。软件架构是一个系统的草图

模式概述

通用问题的通用解决方案

CS架构

Client-Server 架构模式

客户端-服务器架构模式

通过特定的软件访问网络资源

BS架构

Browser-Server 架构模式

浏览器-服务器架构模式

通过浏览器去访问网络资源

CS与BS的特点&对比

CS架构BS架构
系统维护升级需要更新客户端不需要更新
软件安装需要安装不需要安装
开发工作客户端&服务端服务端
多平台支持需要多平台支持不需要

小结

  • BS - Browser/Server - 浏览器-服务器架构模式
  • CS - Client/Server - 客户端-服务器架构模式

Web资源

资源概述

通过浏览器从网络中访问到的网络资源

静态资源

指 Web 页面中可供浏览的数据始终不变。常见的静态资源所使用的技术有 HTML、CSS、JS、图片、多媒体

动态资源

指 Web 页面中可供浏览的数据是由程序产生的,不同时间、不同地点甚至是不同用户所访问的 Web 页面是不同的。常见的动态资源所使用的技术有 ASP、PHP、Python、Servlet、JSP。

静态资源与动态资源的特点 & 对比

静态资源

动态资源

静态资源动态资源
不同时间、不同地点、不同用户一样的不一样的
业务处理能力没有

服务器

服务器概述

可以提供服务的一台机器

服务器硬件

tex
服务器,也称伺服器,是提供计算服务的设备。由于服务器需要响应服务请求,并进行处理,因此一般来说服务器应具备承担服务并且保障服务的能力。

服务器的构成包括处理器、硬盘、内存、系统总线等,和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。

在网络环境下,根据服务器提供的服务类型不同,分为文件服务器,数据库服务器,应用程序服务器,WEB服务器等。

为了提供网络服务,在某些场景需要比PC机更强劲的计算机硬件系统。

服务器软件

tex
服务器软件本质上是一个应用程序(有代码编写而成),运行在服务器设备上。能够接收请求并根据请求给客户端响应数据,发布资源(静态和动态)。

容器软件应用服务器Web服务器Web容器

小结

  • 软件架构

    • BS - Browser/Server - 浏览器/服务器架构模式
    • CS - Client/Server - 客户端/服务器架构模式
  • web 资源

    • 静态资源
    • 动态资源
    • 是否具备业务处理能力
    • 不同时间、地点、用户,访问的不一样
  • 服务器

    • 硬件
    • 软件
      • 应用服务器
      • Web 容器
      • web 服务器
      • 容器软件

常见的应用服务器【了解】

产品公司规模营利模式Java EE 规范支持程度
WebLogicOracle大型商用全部
WebSphereIBM大型商用全部
GlassFishOracle中型开源免费全部
JBossJBoss中小型开源免费大部分
ResinCAUCHO中小型开源免费JSP & Servlet
JettyEclipse联盟小型开源免费JSP & Servlet
TomcatApache基金会中小型开源免费JSP & Servlet

使用Tomcat的理由

  • JSP & Servlet 以外的规范,使用频率不高。如果有,可以使用框架或者中间件来替代
  • 微服务趋势
  • 免费
  • 大厂商对 Apache 基金会的支持
  • 市场份额高,暴露问题及时,不大可能出现致命问题

小结

  • 软件架构

    • CS - Client/Server 架构模式 - 客户端/服务器架构模式
    • BS - Browser/Server 架构模式 - 浏览器/服务器架构模式
  • Web 资源

    • 静态资源
    • 动态资源
    • 区分动态资源的标志:是否具备业务处理能力
  • 服务器

    • 服务器硬件

    • 服务器软件

      Web容器

      应用服务器

      Web服务器

      容器软件

应用服务器

【扩展】Java EE规范

JDBC

【注意】参考《JavaEE-Spec.md》

【扩展】剖析应用服务器原理

回顾

多线程

IO流

网络编程

分析

静态资源

动态资源

Tomcat的下载、安装和启动

Tomcat下载

https://tomcat.apache.org

Tomcat启动、关闭

  • bin/startup.bat

    tex
    启动Tomcat
  • bin/shutdown.bat

    tex
    关闭Tomcat

Tomcat启动常见问题

启动乱码

conf/logging.properties,把所有的 UTF-8,改成 GBK

JAVA_HOME 配置错误

如果没有配置 JAVA_HOME 环境变量,在双击“startup.bat”文件运行 tomcat 时,将一闪立即关闭

解决方式:需要正确配置 JAVA_HOME 环境变量,指向 JDK 的 bin 目录的上一级目录;

端口号冲突

一台拥有 ip 地址的主机上可以提供多个服务(启动多个软件),每一个服务都有一个唯一的端口号。所以端口号不能重复。

【端口号冲突报错信息】

tex
严重: Failed to initialize end point associated with ProtocolHandler ["http-bio-8080"]
java.net.BindException: Address already in use: JVM_Bind <null>:8080
...
Caused by: java.net.BindException: Address already in use: JVM_Bind
...
控制台将出现大量异常信息,描述的是8080端口被占用。

【解决方案】

修改 tomcat 端口

通过修改 tomcat 目录下 conf/server.xml 配置文件修改端口号。将 8080 修改成其他端口号。

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

小结

  • Tomcat 乱码

    • conf/logging.properties
  • JAVA_HOME 配置错误

    Neither the JAVA_HOME nor the JRE_HOME environment defined ...

    • 把JAVA_HOME环境变量配置正确
  • 端口号冲突

    • 杀进程
    • conf/Server.xml

Tomcat目录介绍【了解】

  • bin

    tex
    脚本目录(启动和停止: startup.bat, shutdown.bat)
  • conf

    tex
    配置目录(server.xml, web.xml)
    • conf/server.xml

      tex
      通过Tomcat发布的项目,Web项目的配置文件
    • conf/web.xml

      tex
      关于Tomcat的配置文件
    • conf/Catalina/localhost

      tex
      用于动态发布Web项目
  • lib

    tex
    依赖的jar包
  • logs

    tex
    日志文件存放位置
  • temp

    tex
    临时文件
  • 【重点】webapps

    tex
    用于存放web项目目录
    • webapps/ROOT
  • work

    tex
    Tomcat处理jsp页面工作目录

小结

  • bin

    启动和关闭的脚本在里面

  • conf

    配置

  • webapps

    发布项目(其中的一种)

Tomcat项目的部署方式

webapps【重点】

  • 目录发布

    tex
    将项目文件夹放到webapps目录下边
  • 【常用】war 发布

    tex
    文件夹,打包(在文件夹内部打包),格式选择zip。压缩结束之后,将zip改成.war。
    将war文件,放到webapps目录下边

虚拟路径发布【了解】

  • conf/server.xml

    path: 浏览器访问时locahost:8080后边的地址是什么

    docBase: 告诉Tomcat,这个项目在哪里

xml
<Host>
    <!-- ...... -->
    <Context path="/path" docBase="folder"/>
    <!-- ...... -->
</Host>
tex
缺点:需要重启Tomcat
  • conf/Catalina/localhost

    在此目录下创建一个xml文件,xml名字即为项目访问地址

xml
<Context docBase="folder" />

小结

  • webapps

    • 不压缩
      • 将项目文件夹粘贴到 Tomcat 的 webapps 目录当中
    • 压缩
      • 进入到项目文件夹当中,不要选项目文件夹,而是在项目文件夹当中,选中所有的资源
      • 压缩格式选择 zip
      • 将 zip 改成 war
      • 将 war 包,粘贴到 Tomcat 的 webapps 目录当中
  • 虚拟路径

    • 需要重启 Tomcat
      • conf/server.xml,在 Host 标签当中,新建一个子标签Context
      • Context有两个标签属性:
        • path: 项目映射路径,浏览器访问时,ip+端口之后的名字,比如 localhost:8080/welcome,那么 welcome 就是项目映射路径
        • docBase: 项目在磁盘当中的物理路径,即浏览器访问时,Tomcat 需要找到这个项目,这个项目在磁盘当中的什么位置
    • 不需要重启 Tomcat
      • conf/Catalina/localhost
      • 新建一个 xml 文件,xml 文件的内容是 Context 标签
      • Context 标签当中的两个标签属性,其中的 path,可以不写
      • 如果不写的话,项目路径根据 xml 的文件名来指定
      • docBase 标签属性的意图与<需要重启Tomcat>一节当中的意图是一致的

IDEA集成Tomcat【重点】

手动配置的缺点
  • 缺点 1: Idea 与 Tomcat 切换
  • 缺点 2: 只 1 个项目
  • 缺点 3: 调试程序、重新发布、重启 Tomcat 会造成其他的项目不可用
IDEA全局配置

只需配置1次即可

小结

  • webapps
  • 虚拟路径

Web项目结构介绍

  • src

    tex
    存放java代码
  • web

    tex
    存储Web资源(html, css, js, jsp)
    • web/WEB-INF

      tex
      受保护目录,浏览器不能直接访问到。存放web.xml, class文件, jar包

小结

通过 Idea 配置的 Web 工程

  • src

    放Java源代码

  • web

    放jsp、html、css、js

  • web/WEB-INF

    受保护目录

  • web/WEB-INF/web.xml

    项目核心配置文件

资源路径地址配置

小结

  • 项目发布:让 Tomcat 运行我们的项目

  • 发布方式

    • webapps
    • 文件夹
    • 压缩包
    • 虚拟路径
      • 需要重启Tomcat
        • server.xml
      • 不需要重启 Tomcat
        • conf/Catalina/localhost,新建xml文件,
    • Idea集成Tomcat
  • Web 项目目录结构

    • src
      • java 程序
    • web
      • 静态资源&jsp
    • web/WEB-INF
      • 受保护目录
    • web/WEB-INF/web.xml
      • 项目的核心配置文件

学习目标总结

  • 能够运用 Tomcat 服务器部署 WEB 项目