Tomcat讲解

所写博客的相关资料来自本网站和其他,只属于加上了个人理解的笔记整理,仅用于个人学习,如有侵权行为可联系删除。


一、介绍

1. Web 服务器

  • 服务器上的资源分类
    • 静态资源:指web页面中供人们浏览的数据始终是不变,例如html、css、js、图片等

    • 动态资源:指web页面中提供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同,例如JSP/Servlet、php、asp

2. Tomcat 服务器

  • 介绍:是一个免费的开放源代码的Web应用服务器,支持jsp和servlets,属于轻量级应用服务器

    • servlet其实就是java程序,只是在服务器端的java程序
    • 用来处理网络传输过来的一些请求,比如http请求并处理请求、返回数据
      • 比如你在百度输入一行内容搜索,那么百度服务器如何处理这个请求呢,他需要创建servlet来处理,而tomcat就是帮助你创建servlet的东西,所以也称web容器,是jsp和servlets的容器
  • Tomcat与Apache:前者是后者的扩展,处理动态网页部分

    • Apache 为HTML页面服务,而Tomcat 实际上运行JSP 页面和Servlet
    • Tomcat处理静态HTML的能力不如Apache服务器
  • 虽然是Apache的扩展,但运行时Tomcat是独立的,它实际上作为一个与Apache 独立的进程单独运行的

在这里插入图片描述

3. 访问Tomcat服务器的方法

  • 使⽤localhost域名访问:localhost代表本机
  • 使⽤ip地址127.0.0.1访问:该ip地址也是本机
  • 使⽤机器名称访问:只限⽤于本机上或者局域⽹
  • 使⽤本机IP地址访问
  • 为机器配置临时域名

二、Tomcat目录结构

1. 目录层次结构

在这里插入图片描述

  • work:⼯作⽬录,⽤于存放jsp被访问后⽣成对应的server⽂件和.class⽂件

2. 配置文件

  • server.xml:配置与server相关的信息

    • ⽐如tomcat启动的端⼝号,配置主机(Host)
  • web.xml:用于配置servlet 和 web应⽤(web应⽤相当于⼀个web站点)

  • tomcat-user.xml:配置⽤户名密码和相关权限

3. webapps目录

  • 如何建立对web应用的管理

    • 在webapps中建⽴了web1⽬录,下⾯放置我们的html、jsp、图⽚等等,则web1就被当做web应⽤管理起来
  • web站点的目录规范

    • 目录结构
      在这里插入图片描述

    • 示例
      在这里插入图片描述

  • 如何设置web站点的⾸⻚:在WEB-INF/web.xml中配置

    <welcome-file-list>
        <welcome-file>helloword2.html</welcome-file>
    </welcome-file-list>
    

三、Tomcat的配置

1. 配置虚拟目录

  • 为什么需要配置虚拟目录:如果把所有的web站点的目录都放在webapps下,可能导致磁盘空间不足,也不利于对web站点⽬录的管理

  • 意义:可以把web站点的⽬录分散到其他磁盘管理

  • 方法:虚拟⽬录的映射——把web应⽤所在⽬录交给web服务器tomcat管理

    • 配置方法1:在conf/server.xml⽂件中的节点下添加web站点⽬录的相关代码

      <Context path="/web" docBase="D:\web1"/>
      # path:web项⽬名
      # docBase:站点⽬录的绝对路径
      
    • 配置方法2:在conf\Catalina\localhost文件下,创建⼀个xml⽂件,该⽂件的名字就是站点的名字,xml文件里的代码如下

      <?xml version="1.0" encoding="UTF-8"?>
      <Context
      	docBase="D:\web1" 
      	reloadable="true">
      </Context>
      

2. 配置临时域名

  • 在C:\Windows\System32\drivers\etc\hosts文件里配置

3. 配置虚拟主机

  • 虚拟主机:把一台运行在互联网上的物理服务器划分成多个“虚拟”服务器

  • 为什么需要⽤到虚拟主机:可以把多个不同域名的⽹站共存于⼀个Tomcat中

    • 例如:我现在开发了4个⽹站,有4个域名。如果我不配置虚拟主机,⼀个Tomcat服务器运⾏⼀个⽹站,我就需要4台电脑才能把4个⽹站运⾏起来
  • 配置方法:在server.xml⽂件中添加主机名

    <Host name="zhongfucheng" appBase="D:\web1">
    	<Context path="/web1" docBase="D:\web1"/>
    </Host>
    
  • 注意:在工作环境中,我们一般不会为Tomcat创建虚拟主机的

    • 因为我们只会用Nginx或Apache来处理静态请求,Tomcat负责处理动态请求,所以创建虚拟主机的工作是由Nginx完成的
    • 因为tomcat处理并发的能力不强,所以一般不会让Tomcat做web服务的,Tomcat可以创建多实例来配合Nginx虚拟主机完成多业务

四、Tomcat体系结构

1. 核心组件

  • Tomcat 设计了两个核心组件连接器(Connector)和容器(Container)来完成 Tomcat 的两大核心功能
    • Connector:负责对外交流——处理Socket连接,负责⽹络字节流与Request和Response对象的转化

    • Container:负责内部处理——加载和管理Servlet,以及具体处理Request请求

2. 组件介绍

  • Server(服务器):是Tomcat构成的顶级构成元素,所有一切均包含在Server中

  • Service(服务):一个Server包含多个Service,它将若干个Connector组件绑定到一个Container

  • Container(容器):Container组件下有几种具体的组件,分别是Engine、Host、Context和Wrapper,这4种组件(容器)是父子关系

    • Tomcat通过一种分层的架构,使得Servlet容器具有很好的灵活性
  • Engine:用来管理多个虚拟站点,一个Service最多只能有一个Engine,但是一个引擎可包含多个Host

  • Host:代表一个虚拟主机,或者说一个站点,而一个虚拟主机下可包含多个 Context

  • Context:表示一个Web应用程序, 一个Web应⽤可包含多个Wrapper

  • Wrapper:表示一个Servlet,Wrapper 作为容器中的最底层,不能包含子容器

ps:上述组件的配置其实就体现在conf/server.xml中

在这里插入图片描述在这里插入图片描述


五、Tomcat请求过程

img

① 用户点击网页内容,请求被发送到服务器所在机器的端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得

② 连接服务器:Connector把该请求交给它所在的Service的Engine来处理,并等到Engine的回应

③ 解析主机名:Engine请求localhost/test/index.jsp,匹配所有的虚拟主机Host

④ 解析Web应用:Engine匹配到名为localhost的Host,其获得请求/test/index.jsp,匹配它所拥有的所有的Context

  • 如果找不到,默认交给名为localhost的Host处理,因为该Host被定义为该Engine的默认主机

⑤ 解析资源名:path=“/test”的Context获得请求/index.jsp,并在其mapping table中寻找出对应的Servlet

⑥ 获取资源:构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet() 或 doPost(),并执行业务逻辑、数据存储等程序

⑦~⑩ 返回资源:一层层地将HttpServletResponse对象返回给上一级,最后返回给客户端


六、浏览器如何访问Web资源

在这里插入图片描述

七、参考资料

  1. 《三歪教你学Servlet》(源自:公众号Java3y)
  2. https://www.cnblogs.com/hggen/p/6264475.html
  3. https://blog.csdn.net/qq_23830637/article/details/104497094
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值