Tomcat深入浅出(一)
一、Tomcat简介
我们下载好Tomcat后需要配置一下Java环境:如果打开出现闪退得情况,首先是jdk

同时配置JRE_HOME

Tomcat的一些关键目录:
- /bin:存放用于启动及关闭的文件,以及一些脚本。其中以
*.sh结尾的是linux下运行的文件,window下是.bat文件。 - /conf:配置文件及相关的信息。容器的主配置文件为
server.xml。 - /log:日志记录文件。
- /webapps:存放Web应用的相关文件。
- /lib:存放以
.jar文件,各种依赖 - /webapps:里面存放我们的应用,Tomcat会自动找到。我们会自动访问ROOT下面的index.jsp页面。
通过bin\startup.bat来开启Tomcat
通过bin\shutdown.bat关闭Tomcat
二、了解Tomcat运行机制

1.首先大家都知道Tomcat的访问可以是localhost或者127.0.0.1,但是并没有了解具体的由来,所以我们来查找一下本机的hosts文件:

我们可以通过修改hosts文件里面的配置,修改Tomcat的访问域名。
2.然后发起请求,去DNS服务器通过域名找到对应的ip地址,然后再找对应的服务器。
3.当然我们也可以直接使用ip地址去浏览器查找,这样就跳过了DNS阶段,但是ip地址不好记呀。♂️
4.定位到了服务器以后,我们通过端口号8080找到Tomcat这个应用,然后通过Socket进行三次握手、长连接,
通过Connector连接器的处理
5.将传来的请求信息放入到Catalina请求处理容器中,处理完以后返回给Connector连接器,最后再次通过Socket传回给客户端。
三、Tomcat配置文件
3.1 logging.properties
这是一个日志信息的配置文件,我们可以通过设置这个参数来解决我们控制台的乱码问题。
将这里的UTF-8改成GBK即可。
因为我们电脑是GBK的编码。

通过这段话也可以明白:日志控制台编码 = GBK
同时我们也可以根据日志 进行debug
3.2 server.xml
server.xml是Tomcat服务器的核心配置文件,同时也包含了Tomcat的Servlet容器的所有配置文件。

一个server中有很多个service服务
Connector连接器和Engine启动引擎是同级别的

这里Connector连接器:
- port:连接的端口号
- protocol:处理协议
- connectionTimeout:连接超时
- redirectPort:重定向端口

这里的Engine下面的Host:
- appBase:是访问localhost下的默认资源路径 webapps,也是根路径。
- 我们可以在里面定义一个
<Context docBase="" path=""> </Context> - docBase:更改默认资源路径文件夹
- path:设置访问路径
3.3 web.xml

首先你会看到这些东西,这些是一些定义的规范,不必过于了解,只是限制了你什么标签可以写、怎么写,需要按照他的规范来写,否则会报错。
这是一个默认的请求处理的servlet
`
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>`

通过这个servlet-name的名字,设置请求路径,找到上面的servlet配置信息,最后找到对应的处理类。
设置欢迎页面


当我们启动Tomcat的时候,我们可以看到这段信息,这也是为什么我们的C盘莫名其妙的就tm满了...
idea并没有用我们Tomcat的配置文件,而是把它复制了一份精简版放到了C盘这个目录下
Tomcat深入浅出(一)的更多相关文章
- Tomcat深入浅出——Servlet(二)
一.Servlet简介 Servlet类最终开发步骤: 第一步:编写一个Servlet类,直接继承HttpServlet 第二步:重写doGet方法或者doPost方法,重写哪个我说的算! 第三步:将 ...
- Tomcat深入浅出——Servlet(三)
零.HttpServletRequest 上一篇已经介绍了这个接口,现在补充些内容 首先介绍一下作用域: jakarta.servlet.jsp.PageContext pageContext 页面作 ...
- Tomcat深入浅出——Session与Cookie(四)
一.Cookie 1.1 Cookie概念 Cookie:有时也用其复数形式 Cookies.类型为"小型文本文件",是某些网站为了辨别用户身份,进行Session跟踪而储存在用户 ...
- Tomcat深入浅出——Filter与Listener(五)
一.Filter过滤器 1.1 Filter过滤器的使用 这是过滤器接口的方法 public interface Filter { default void init(FilterConfig fil ...
- Tomcat深入浅出——最终章(六)
前言 利用了六天的时间,对Tomcat的内容进行了整理. 学习不易.整理也不易,自己坚持的更了下来,很不错. 希望每一位在努力前行的小伙伴,都要相信坚持就会有收获. 本次Tomcat就探寻到这里,明年 ...
- 深入浅出Tomcat系列
原本打算一篇文章就发了的,无奈文章太长,阅读压力较大.为了让阅读体验更好一些,还是分多篇吧,大概6篇. 下面是这个主题的目录: 深入浅出Tomcat/1- 来历和配置文件 深入浅出Tomcat/2 - ...
- 深入浅出Tomcat/4 - Tomcat容器
Container是一个Tomcat容器的接口,Tomcat有四种容器 · Engine · Host · Context · Wrapper Engine代表整个Ca ...
- 深入浅出Tomcat/3 - Tomcat生命周期
在上面的部分,其实我们已经接触到Tomcat的生命周期了,接下来我们将仔细讨论和学习Tomcat的生命周期的具体实现. LifeCycle接口 这个LifeCycle接口上面在讲解Server和Ser ...
- 深入浅出Tomcat/2 - Tomcat启动和停止
Tomcat启动和停止 很明显,我们启动或停止Tomcat,一般调用的是bin下的startup.sh或shutdown.sh(以Linux为例,以下涉及到平台,若无特殊说明,一般都指Linux).我 ...
随机推荐
- python基础练习题(题目 求输入数字的平方,如果平方运算后小于 50 则退出)
day32 --------------------------------------------------------------- 实例046:打破循环 题目 求输入数字的平方,如果平方运算后 ...
- Python 一网打尽<排序算法>之堆排序算法中的树
本文从树数据结构说到二叉堆数据结构,再使用二叉堆的有序性对无序数列排序. 1. 树 树是最基本的数据结构,可以用树映射现实世界中一对多的群体关系.如公司的组织结构.网页中标签之间的关系.操作系统中文件 ...
- 21天学通Python PDF完整版
有需要的点击这里自取 内容简介 · · · · · · <21天学通Python>全面.系统.深入地讲解了Python编程基础语法与高级应用.在讲解过程中,通过大量实际操作的实例将Pyt ...
- Nginx作为高性能服务器的缘由以及请求过程
Nginx作为高性能服务器的缘由以及请求过程 简介: Nginxx采用的是多进程(单线程)&多路IO复用模型,使用I/O多路复用技术的Nginx,就成了"并发事件驱动"的服 ...
- 不再空谈AI,从打造一台智能无人机开始
对于大多数无人机爱好者来说,能自己从头开始组装一台无人机,之后加入AI算法,能够航拍,可以目标跟踪,是心中的梦想. 并且,亲自从零开始完成复杂系统,这是掌握核心技术的必经之路. 开课吧特邀北京航空航天 ...
- break、continue、return中选择一个,我们结束掉它
在平时的开发过程中,经常会用到循环,在写循环的过程中会有很多判断条件及逻辑,你知道如何结束一个循环吗?在java中有break.continue.reture三个关键字都可以结束循环,我们看下他们 ...
- Es图形化软件使用之ElasticSearch-head、Kibana,Elasticsearch之-倒排索引操作、映射管理、文档增删改查
今日内容概要 ElasticSearch之-ElasticSearch-head ElasticSearch之-安装Kibana Elasticsearch之-倒排索引 Elasticsearch之- ...
- 直观比较 popcount 的效率差异
问题 求 \(\sum\limits_{i=1}^{3\times 10^8} popcount(i)\) . 仅考虑在暴力做法下的效率. 枚举位 __builtin_popcount #includ ...
- 深度学习与CV教程(6) | 神经网络训练技巧 (上)
作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/37 本文地址:http://www.showmeai.tech/article-det ...
- 架构师必备:HBase行键设计与应用
首先要回答一个问题,为何要使用HBase? 随着业务不断发展.数据量不断增大,MySQL数据库存在这些问题: MySQL支持的数据量为TB级,不能一直保留历史数据.而HBase支持的数据量为PB级,适 ...