【Java Web】web服务器容器-Tomcat

Web相关概念回顾

  • 1.软件架构:
    • C/S:客户端/服务器端
    • B/S:浏览器/服务器
  • 2.资源分类:
    • 静态资源:所有用户访问后,得到的结果都是一样的,称为静态资源,静态资源可以直接被浏览器解析,如:html、css、JavaScript
    • 动态资源:每个用户访问相同的资源时,得到的结果可能是不一样的。称为动态资源,需要先转换为静态资源,再返回浏览器,如:servlet、jsp、php、asp
  • 3.网络通信三要素:
    • IP:计算在网络中的唯一标识
    • 端口port:应用程序在计算机中的唯一标识。0~65536
    • 传输协议:规定了数据传输的规则
      • TCP:安全协议,三次握手、速度稍慢
      • UDP:不安全协议。速度快
        在这里插入图片描述

Web服务器软件

  • 服务器:安装了服务器软件的计算机(比如:安装了mysql服务器)

  • 服务器软件:接收用户的请求,处理请求,做出响应

  • web服务器软件:接收用户的请求,处理请求,做出响应

    • 在web服务器软件中,可以部署web项目,让用户通过浏览器来访问这些项目
    • 动态资源不能直接运行,要靠这些web服务器,也叫web容器
  • 常见的java相关的web服务器软件:

    • webLogic:Oracle公司,大型的JavaEE服务器,支持所有的JavaEE1规范,收费的
    • webSphere:IBM公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的
    • JBOSS:JBOSS公司,大型的JavaEE服务器,支持所有的JavaEE规范,收费的
    • Tomcat:Apache基金组织,中小型JavaEE服务器,仅仅支持少量的JavaEE规范servlet/jsp。开源免费

Tomcat

下载

在这里插入图片描述

安装

在这里插入图片描述

启动时经常遇到的问题

在这里插入图片描述

关闭

在这里插入图片描述

部署

1.直接放在webapps文件里
  • /hello:项目的访问路径–>虚拟目录
    在这里插入图片描述
    (hello文件就是项目访问路径的虚拟目录,hello.html就是资源路径)
    在这里插入图片描述
  • war包:打成war包,再将war包放置到webapps目录下
    在这里插入图片描述
2.配置 conf/server.xml(修改后要重新启动Tomcat服务器才能生效)

将hello项目放在D盘下
在这里插入图片描述
docBase:项目存放的路径
path:虚拟目录
注意访问时的路径就是path配置的**/hehe**
在这里插入图片描述
缺点:但是不安全

3.热部署:在conf\Catalina\localhost配置xml

创建任意名称的xml文件,在文件中编写

<Context docBase="D:\hello">

虚拟路径就为你取的任意名称
在这里插入图片描述
在这里插入图片描述
热部署:指的是直接将xml文件重命名后缀**.bak**(临时文件的意思,也就是读取不到这个文件),不用重新启动tomcat服务器,就能生效
在这里插入图片描述

静态项目和动态项目的目录结构的区别

Java动态项目的目录结构
WEB-INF目录:
在这里插入图片描述

Tomcat集成IDEA

新建web项目在这里插入图片描述
查看tomcat配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
因为选了JavaEE所以自动部署了该项目
在这里插入图片描述
果然报了8080端口被占用,我们就来暴力解决了
在这里插入图片描述
DOS查看占有端口号的进程PID

netstat -aon

在这里插入图片描述
记住端口号,去任务管理器查看被哪个进程占用,其实是Tomcat开始默认启动哈哈
在这里插入图片描述
在这里插入图片描述
stop后再启动就成功啦!!
在这里插入图片描述
因为选的是/,所以这里访问时直接localhost不用加**
在这里插入图片描述
tomcat7和tomcat8
tomcat7:在get请求时控制台会出现乱码
在tomcat8是已解决了get请求乱码的这个问题,但是tomcat8会出现控制台日志中文乱码
所以在这里把java.util.logging.ConsoleHandler.encoding = UTF-8注释掉就可以解决
在这里插入图片描述

Tomcat处理请求过程

在这里插入图片描述
过程解析:
一个用户请求过来,如果是windows操作系统,它首先进入一个队列,我们的selector会监听底层的事件通知,这个队列就是accept queue,代表TCP的3次握手成功后就会进入到我们的accept queue队列,selector就会收到通知;红线那一部分开始就是Tomcat的处理范畴。

  • Tomcat通过Endpoint组件接收socket连接,接收到一个socket连接后,执行以下步骤:
    • 第一次从socket中获取数据到InputBuffer中,BIO对应的是InternalInputBuffer,父类是AbstractInputBuffer
    • 然后基于InputBuffer进行解析数据
    • 先解析请求行,把请求方法,请求uri,请求协议等封装到org.apache.coyote.Request对象中
    • org.apache.coyote.Request中的属性都是MessageBytes类型,直接可以理解为字节类型,因为从socket获取的数据都是字节,在解析过程中不用直接把字节转成字符串,而且MessageBytes虽然表示字节,但是它并不会真正地存储字节,还是使用ByteChunk基于InputBuffer中的字节数组来进行标记,标记字节数组中的哪个。。。

Tomcat参数调优


  1. JavaEE:Java语言在企业级开发中使用的技术规范的总和,一共规定了13项大规范 ↩︎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值