Tomcat入门

一.Tomcat概述

1.Tomcat简介
  • Apache软件基金会
  • 开源软件
  • 中小型应用服务器
  • Tomcat:解析Http请求并将结果返回给客户端的应用程序
2.Tomcat结构图及介绍

在这里插入图片描述

  • Server:指Tomcat服务器,其中包含多个组件,负责管理和启动各个Service,同时还要监听8005端口发来的shutdown命令用于关闭整个服务器
  • Service:对外提供完整的基于组件的web服务,其中包含Connector和Contiainer组件和多个其他组件。Service之间是独立的,但会共享虚拟机资源
  • Connector:是Tomcat与外部的连接器,监听固定的端口,接受外部请求将请求传递给Container,并将Container处理之后的结果返回给外部
  • Container:是Servlet容器,内部由多个容器组成,主要用于管理Servlet的生命周期,调用Servlet相关方法取处理业务逻辑
  • Jasper:Tomcat的JSP解析引擎,主要用于将JSP文件转换成Java文件并编译成.class文件
  • Naming:名称服务,将名称和对象连接起来,用名称去访问对象
  • Session:用于创建和管理Session,及Session的持久化,且支持Session集群
  • Loging:主要用于记录日志,包含访问错误信息、运行信息等
  • JMX:JavaSE中的技术规范,主要是为应用、设备、系统等提供的框架,使用JMX可以监控Tomcat的运行状态
3.Connector组件
  • Connector组件【连接器】作用
    • 接受客户端连接
    • 加工处理客户端请求(解析的过程生成request对象,组装的过程生成response对象)
4.Container组件
  • Container组件是所有子容器的父接口

  • 在Tomcat中,Container的设计是典型的责任链设计模式,有四个子容器,关系图如下

在这里插入图片描述

  • 什么是责任链模式?责任链模式是使多个对象都有机会去处理同一个请求,从而避免请求的发送者和接受者的耦合关系,将这些对象连成一条链,并沿着链传递请求,直到一个对象处理为止

    • Engine:用来管理多个站点,一个service只能有一个站点
    • Host:代表一个站点(即虚拟主机),通过配置host就可以添加站点
    • Context:代表一个应用程序
    • Wrapper:封装了的Servlet
  • Tomcat的webapps目录下有ROOT文件夹和其他文件夹,ROOT文件夹下存放主目录内容,可以直接通过域名访问;其他文件夹存放子目录内容,需要通过域名/context名称的形式访问

5.Server处理HTTP请求的过程

在这里插入图片描述

  • 用户点击网页的内容,请求被发送到本机端口的8080,被监听在8080的connector获得
  • 该请求交给Server的Engine处理,并等待Engine的回应
  • Engine获得的请求时localhost/test/index.jsp,去匹配所有的虚拟主机(即host)
  • 名称为localhost的host获得到请求中/test/index.jsp获得context
  • 在mapping table里面寻找对应的Servlet,从而构造http Servlet request和response对象,作为参数去调用http servlet的doGet或doPost去执行业务
  • 获得的response对象一级一级往回返
  • 【Tomcat就是自上而下,容器中又包含子容器的结构】

二.Tomcat的安装

1.Windows上安装Tomcat
  • 搭建运行基础环境(JDK1.8)
    • 安装JDK
    • 配置Java目录的环境变量【jdk/bin目录和jre/bin目录】
  • 配置Tomcat
    • 到官网下载对应的压缩包
    • 直接点击startup文件即可启动
2.Linux上安装Tomcat
  • 安装Linux的JDK
    • 到官网下载JDK的压缩包并解压
    • 配置环境变量
  • 安装Linux的Tomcat
    • 到官网下载对应的压缩包
    • 进入Tomcat bin目录,执行startup.sh启动
    • 可以在logs文件夹下的catalina.out文件查看日志信息
3.Tomcat目录结构
  • bin:主要用来存放Tomcat运行命令
  • conf:主要用来存放配置文件
    • catalina.policy:放置JSP代码或用户代码破坏Tomcat容器
    • catalina.properties:主要包含不能被JSP或servelt修改的jar的文件列表
    • context.xml:有关context的配置文件,被所有的web应用程序使用,默认文件位置是web.xml文件
    • logging.properties:Tomcat日志使用的配置文件,配置日志的输出格式等等
    • server.xml:Tomcat中最主要的配置文件,定义了Tomcat的体系结构,在Tomcat启动时构建Tomcat容器,尝尝在这个文件中修改Tomcat端口号
    • tomcat-users.xml:Tomcat的web页面,人员和管理员的信息在这个文件中配置
    • web.xml:被Tomcat所有应用程序使用,主要配置Tomcat的启动信息
  • lib:所有Tomcat容器使用的jar包,也包含用户开发的Web程序使用的jar包
  • logs:Tomcat在运行期间产生的日志信息
    • 在windows环境中,控制台输出的信息在catalina.log文件中
    • 在linux环境中,控制台输出的信息在catalina.out文件中
  • temp:记录用户在Tomcat运行过程中产生的临时文件,文件清空对Tomcat没有影响
  • webapps:存放应用程序,当应用被启动时会加载webapps下面的应用程序,以文件夹、war包、jar包的形式发布应用**【当然,也可以把项目放在电脑中任何位置,只需要在配置文件中配置映射即可】**
  • ROOT:Tomcat的根目录,直接使用ip:端口/文件名称进行访问
  • work:Tomcat运行时编译后的文件,jsp编译后的文件或jar编译后的文件,清空这个目录再启动Tomcat即可达到清除服务器缓存的效果

三.Tomcat相关配置

1.修改Tomcat端口号
  • 配置端口号
    • 端口范围165535,11024会分配给默认服务,21端口ftp服务,25端口smtp服务,80端口http服务
  • 默认端口号
    • Shutdown端口:指定端口指定关闭Tomcat,向端口发送关闭端口的字符串就可以关闭Tomcat服务,默认8005端口
    • Http请求端口:建立Http请求,在访问Tomcat服务器时使用的就是这个连接器,默认端口8080
    • AJP服务端口:主要负责和其他Http服务器建立连接,把Tomcat与其他的Http服务器集成,在集成时使用这个连接器,默认端口8009
  • 修改端口号
    • 修改server.xml中protocol是HTTP/1.1的Connector,即修改了Http请求的端口号
    • 重新启动Tomcat服务器即可,可以看到日志中显示监听8081端口
2.修改内存
  • 为什么修改Tomcat内存

    • 当一个项目比较大时,项目的依赖很多,项目启动时会将项目中所有的类依次加载到内存中,java的内存模型分为堆内存(主要用于存储类的实例、数组等引用数据类型,即new生成的对象)、栈内存(主要存储局部变量,如方法参数等)、静态内存区(主要存储一些常量,类的元数据【方法属性等等】该区的内存不会被gc回收)
    • 内存溢出
      • OutOfMemoryError:Java heap space异常,表示堆内存满了,不是程序的bug,就可能是项目中引用的jar比较多,导致内存溢出。JVM默认的堆内存是物理内存的1/64,最大的使用内存是物理内存的1/4
      • OutOfMemoryError:PermGen space异常,表示静态内存区满了,通常由于加载的类太多导致的。JDK8以后由于调整了内存模型,不会出现此异常。
      • StackOverflowError异常:表示栈内存溢出,通常因为死循环或无限递归导致的。
  • 通过以下方式在catalina.bat文件中配置运行内存参数【配置到第二行,或配置在startup文件中】

    • -server:虚拟机的运行模式,配成server时当有多个cpu时,性能可以更好的发挥,默认是client
    • -Xms:java heap初始大小,默认是物理内存的1/64,最大不要超过物理内存的80%
    • -Xmx:表示java heap的最大值,建议设置为物理内存的一半
    • MetaspaceSize:表示初始元空间的大小,默认是21M,通过此方式设置成128M
    • MaxMetaspaceSize:表示最大的元空间大小,默认是无上限的,通过此方式设置成256M
    JAVA_OPTS="-server -Xms256m -Xmx512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=256m"
    
  • 其实在性能方面,还应考虑Java提供的垃圾回收机制。虚拟机的堆大小,决定了虚拟机在回收垃圾的时间和频率,如果堆的大小很大的话,完全垃圾收集就会很慢,频率会降低。反之,垃圾收集就很快,频率会很高。调整堆大小的目的就是最小化垃圾收集的时间,在特定时间内最大化处理用户请求。

3.配置热部署
  • 什么是热部署:不启动Tomcat的情况下,将项目部署到服务器中,即开发即用。

  • 如何配置热部署

    • 方法一:将war包放到webapps文件夹下中

    • 方法二:在conf ->

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值