简述 Tomcat
1.1 Tomcat 简介
1.1.1 概述
Tomcat 最初是由 Sun 的软件架构师詹姆斯·邓肯·戴维森开发的。后来他帮助将其变为开源项目,并由 Sun 贡献给 Apache 软件基金会。由于大部分开源项目 O’Reilly 都会出一本相关的书,并且将其封面设计成某个动物的素描,因此他希望将此项目以一个动物的名字命名。因为他希望这种动物能够自己照顾自己,最终,他将其命名为 Tomcat。而 O’Reilly 出版的介绍 Tomcat 的书籍的封面也被设计成了一个公猫的形象。进而 Tomcat 的 Logo 兼吉祥物也被设计为一只公猫。 Tomcat 服务器是一个免费的开放源代码的 Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选。对于一个初学者来说,可以这样认为,在一台机器上配置好 Apache 服务器,可利用它响应 HTML 页面的访问请求。实际上 Tomcat 是 Apache 服务器的扩展,但运行时它是独立运行的,所以当你运行 Tomcat 时,它实际上作为一个与 Apache 独立的进程单独运行的。 Apache 为 HTML 页面服务,而 Tomcat 实际上运行 JSP 页面和 Servlet。另外,Tomcat 和 IIS 等 Web 服务器一样,具有处理 HTML 页面的功能,另外它还是一个 Servlet 和 JSP 容器,独立的 Servlet 容器是 Tomcat 的默认模式。不过,Tomcat 处理静态 HTML 的能力不如 Apache 服务器。
1.1.2 Tomcat 组件说明
Tomca 的心脏是两个组件:Connector 和 Container(Engine,Host,Context,Wrapper)。一个Container 可以选择多个 Connecter,多个 Connector 和一个 Container 就形成了一个 Service。Service 可以对外提供服务,而 Server 服务器控制整个 Tomcat 的生命周期。
顶级组件 Server 服务器(Server):表示一个正在 JVM 运行的 Tomcat 实例;Server 代表整个 catalina Servlet 容器;包含一个或多个 Service 子容器。
顶级组件 Service 服务(Server) 代表 Tomcat 实例本身,Service 则代表 Tomcat 中一组处理请求,提供服务的组件。包括多个 Connector 和一个 Container。
Connector Connector 是客户端连接到Tomcat容器的服务点,它为引擎提供协议服务来将引擎与客户端各种协议隔离开来,如 HTTP、HTTPS、AJP 协议。
Container Container 用于封装和管理 Servlet,以及具体处理 Request 请求;包含 4 大请求处理组件:引擎(engine)、虚拟主机、上下文(context)组件。
其他组件 Tomcat 还有其它重要的组件,如安全组件 security、logger、session、mbeans、naming 等其它组件。这些组件共同为 Connector 和 Container 提供必要的服务。
1.2 Tomcat 的使用
① 下载:点击 Tomcat 下载 , 亦可关注文末公众号回复 Tomcat 获取
② 安装:直接解压即可,注意目录中不要包含中文
③ 启动:bin/startup.bat,双击运行该文件即可,亦可命令行 ./startup.bat
启动
④ 使用浏览器访问:localhost:8080,见到如下页面即启动成功
⑤ 关闭:bin/shutdown.bat,双击运行该文件即可,亦可命令行 ./shutdown.bat
关闭
1.3 常见错误
1.3.1 一闪而过
双击启动后,黑窗口一闪而过,使用命令行启动 tomcat,查看报错信息。这种情况一般是 JAVA_HOME 配置错误导致的,正确配置 JAVA_HOME 就可以解决。
1.3.2 无法创建 Java 虚拟机
这个可能是 jdk 与 tomcat 版本不一致导致的,查找与 jdk 对应 tomcat 的版本再安装尝试一下。
1.3.3 端口占用
① 查看占用端口的程序 netstat -ano | grep 8080
② 强杀进程 taskkill /pid PID /f
其中 /f 表示强制关闭该进程
1.4 Tomcat 配置
1.4.1 环境变量
① 创建系统变量 CATALINA_HOME,变量值为 Tomcat 的解压路径。
② 配置 path,将 %CATALINA_HOME%bin
、%CATALINA_HOME%lib
、%CATALINA_HOME%libservlet-api.jar
都配入其中
③ 验证是否配置成功,启动命令行执行 startup.bat
能够启动 tomcat 则配置成功
1.4.2 默认端口修改
在 confserver.xml
中找到如下配置,修改 port
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 我还在生产玩 JDK7,JDK 15 却要来了!|新特性尝鲜
- 36个助你成为专家需要掌握的JavaScript概念
- Bulehero 蠕虫病毒安全分析报告
- 一句话加速grep近30倍
- 正道的光!这有个用TensorFlow做的小黄图过滤器
- Bytom侧链Vapor源码浅析-节点出块过程
- Logstash: 启动监控及集中管理
- 渗透测试中文件上传技巧
- PHP常见过WAF webshell及最简单检测方法
- 基于PhantomJS的动态爬虫引擎
- XSS Cheat Sheet
- 免费代理池的实现与优化
- 基于Django和clean-blog前端框架的博客系统
- 应急响应笔记之Linux篇
- Access数据库相关知识