Tomcat基本用法
- 一、Tomcat 是什么
- 二、下载安装
- 三、目录结构
- 四、启动服务器
- 五、部署静态页面
一、Tomcat 是什么
汤姆猫?
事实上,Java 世界中的 “汤姆猫” 完全不是一回事,但是同样大名鼎鼎 ~
Tomcat 是一个 HTTP 服务器。
前面我们已经学习了 HTTP 协议,知道了 HTTP 协议就是 HTTP 客户端和 HTTP 服务器之间交互数据的格式。
同时也通过 ajax 和 Java Socket 等 分别构造了 HTTP 客户端。
HTTP 服务器我们也同样可以通过 Java Socket 来实现。而 Tomcat 就是基于 Java 实现的一个开源免费,也是被广泛使用的 HTTP 服务器。
HTTP客户端,就是大家平时用的浏览器。需要开发实现一个服务器,搭建网站的"后端部分"。
开发实现一个服务器本质上就是写个 TCP socket 服务器。比较麻烦,有很多重复性工作。业界就有一些大佬,实现了一些现成的 HTTP 服务器,我们进行开发网站,就不必从头去写了,只需要基于这些 HTTP 服务器进行二次开发即可!
学习 Tomcat 目的就是能够熟练掌握 Tomcat 的 API,基于 Tomcat 开发网站后端程序。
HTTP 服务器,本质上就是一个 TCP 服务器,只不过在此基础上加了一些按照 HTTP 协议格式进行解析 / 构造的代码。咱们写网站后端,要做的就是调用Tomcat 提供的API进行二次开发.
二、下载安装
在 Tomcat 官网下载即可。这里我们使用的是 Tomcat 8 ~
链接:https://tomcat.apache.org/download-80.cgi
选择其中的 zip 压缩包,下载后解压缩即可。
解压缩的目录最好不要带 “中文” 或者 特殊符号。
三、目录结构
针对 tomcat 目录解压缩之后,可以看到如下结构:
apache-tomcat-8.5.47\
bin\ 存放各种启动、停止脚本的。*.sh 是以后在 linux 上用的,*.bat 是在 windows 上用的
startup.bat 启动服务,双击即可使用
startup.sh (linux、mac的启动服务)
conf\ 相关的配置文件,目前我们不用关心
server.xml 这里可以配置 Tomcat 绑定哪个端口,以及 Tomcat 是否启用 https 啥的
lib\ 运行 tomcat 需要的类库,我们不关心
logs\ 运行时的日志文件,我们有时需要查看日志,来发现定位一些问题
temp\ 临时文件夹,不关心
webapps\ 存放我们要运行的 web application 的文件夹,对于我们最常用的一个文件夹
work\ Tomcat 内部进行预编译的文件夹,我们不关心
下面都是一些文档,有兴趣的同学可以自行阅读
BUIDING.txt
CONTRIBUTING.md
LICENSE
NOTICE
README.md
RELEASE-NOTES
RUNNING.txt
其中我们最关注的目录就是 webapps 目录。web applications 的简称,意思是用来存放 web 应用的文件夹。
理解 “web 应用”:
一个具有独立完整功能的 “网站”,我们就可以称为一个 “web 应用”。
例如搜狗搜索实现了独立完整的 “搜索引擎功能”,淘宝网 实现了独立完整的 “电商功能”。
一个 Tomcat 服务器上是可以同时部署多个这样的 web 应用的,这些 web 应用以目录的形式被放到 webapps 目录中。
进入 webapps 目录:
每个文件夹都对应着一个 web 应用,可以在浏览器中分别访问每个 web 应用。
四、启动服务器
在 bin 目录中,双击 startup.bat 即可启动 Tomcat 服务器。
看到形如以下内容的日志,说明启动成功:
注意:在 Windows 上通过 cmd 方式启动 Tomcat 会出现乱码,但是不影响 Tomcat 的使用。
乱码的原因是 Tomcat 默认按照 UTF-8 的编码方式处理中文,而 windows 的 cmd 默认是 GBK 编码。
如果使用 Linux 或者 IDEA 中的终端来启动 Tomcat,则没有乱码问题,因此此处的乱码我们暂时不
处理 ~~
Tomcat 跑起来之后,在浏览器中输入 127.0.0.1:8080 (Tomcat默认端口8080) 即可看到 Tomcat 的默认欢迎页面:
如果看不到欢迎页面,检查 URL 的 IP 地址以及端口号是否正确,同时也要检查 Tomcat 是否启动成功。
如果启动失败怎么办?
最常见的启动失败原因是端口号被占用,Tomcat 启动的时候默认会绑定 8080 和 8005 端口。如果有其他进程已经绑定了这两个端口中的任意一个,都会导致 Tomcat 不能启动。
在命令行中使用 netstat -ano | findstr 8080 确定看 8080 是否被其他进程绑定,把对方进程干掉,再重新启动 Tomcat 一般就可以解决问题 ~~
形如这样的结果说明 8080 端口已经被占用,占用的进程是 13348 这个进程。然后就可以在任务管理器中找到并干掉这个进程。
五、部署静态页面
理解 “静态”
静态页面也就是内容始终固定的页面。即使 用户不同/时间不同/输入的参数不同,页面内容也不会发生变化 (除非网站的开发人员修改源代码,否则页面内容始终不变) ~~
对应的,动态页面指的就是 用户不同/时间不同/输入的参数不同,页面内容会发生变化。
举个例子:
Tomcat 的主页 https://tomcat.apache.org/ 就是一个静态页面:
而 B 站的主页 https://www.bilibili.com/ 则是一个动态页面:
前面写的 HTML,都是写成固定的内容,就可以理解成是 “静态页面” ~~
部署单个 HTML
我们可以把自己写好的 HTML 部署到 Tomcat 中。
- 创建 hello.html
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0,
maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>hello</title>
<style>
div {
font-size: 200px;
color: red;
}
</style>
</head>
<body>
<div>hello</div>
</body>
</html>
- 把 hello.html 拷贝到 Tomcat 的 webapps/ROOT 目录中
index.jsp 就是欢迎页面 ~~
- 在浏览器中通过 URL http://127.0.0.1:8080/hello.html 来访问
直接这么写,就是找 /ROOT 下的文件 ~~
若要访问在其他文件夹里的文件,需要加上文件夹的路径!
这个页面就是通过 Tomcat 这个 HTTP 服务器来获取到的!
既然都可以直接双击本地打开,为啥还要通过 Tomcat 折腾一下???
双击本地打开只能访问自己电脑的;使用 Tomcat 可以通过网络访问到别人电脑的网页!但是此时并不可以,因为不在同一个局域网中 (NAT机制)!
注意: 127.0.0.1 为环回 IP,表示当前主机。此时别人无法通过这个 IP 访问到本地电脑上的页面。内网 IP 是会重复的!要想能够远程访问,势必要有一个外网 IP,怎样才能有外网 IP?可以使用云服务器 ~~ (后续讲解)