文章目录
- 一、Tomcat是什么
- 二、Tomcat下载安装
- 三、Tomcat目录结构介绍
- 四、启动Tomcat
- 1.启动失败的原因
- 五、部署静态页面
- 1.静态页面是什么
- 2. 部署单个 HTML
- 3.部署带有 CSS / JavaScript / 图片 的 HTML
- 4.部署 HTML 到单独的目录中
- 六、感想
一、Tomcat是什么
百度百科是这样说的:
Tomcat 服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。
Tomcat是支持运行Servlet/JSP应用程序的容器,运行在jvm上,绑定IP地址并监听TCP端口。
它是由Apache推出的一款免费开源的Servlet容器,可实现JavaWeb程序的装载,是配置JSP(Java Server Page)和JAVA系统必备的一款环境。它也具有传统的Web服务器的功能:处理Html页面。但是与Apache相比,在处理静态Html上的能力略逊一筹。
Tomcat运行时占用的系统资源小,扩展性好,支持负载平衡与邮件服务等开发应用系统常用的功能,因而深受java爱好者的喜爱,并得到了部分软件开发商的认可,和Apache一样,早已成为主流Web服务器的一种。
往细的方面说:Tomcat 是一个 HTTP 服务器。HTTP 协议就是 HTTP 客户端和 HTTP 服务器之间的交互数据的格式。我之前文章写过通过 ajax 和 Java Socket 分别构造了 HTTP 客户端。我们也同样可以通过 Java Socket 来实现HTTP 服务器,而 Tomcat 就是基于 Java 实现的一个开源免费,也是被广泛使用的 HTTP 服务器。
二、Tomcat下载安装
(1)打开这个网站:Apache Tomcat
在 Tomcat 官网下载,Tomcat 版本很多, 我们这里下载的使用 Tomcat 8。
我这里为什么选择Tomcat8呢?
因为Tomcat的版本,和JDK以及Servlet的版本都是密切绑定在一起的,我电脑的JDK版本是8,因此我选择下载Tomcat8。有些同学的JDK可能用的是11甚至是17/18 ,这个时候下载的Tomcat版本最好统一。统一版本,统一环境,是个很重要的事情!尤其是以后咱们在工作中,公司用的是啥版本,咱们就用啥版本。
三、Tomcat目录结构介绍
对tomcat 目录解压缩之后, 可以看到如下结构:
-
最上面显示的apache-tomcat-8.5.78这个,里面的8.几小版本无所谓,只要是8就行。
-
bin目录,存放各种启动、停止脚本的。里面的.bat后缀的文件是 windows的批处理文件。.sh 后缀的文件是linux的shell脚本的文件。其中startup.bat 启动服务,双击即可使用。
-
conf:Tomcat的配置文件,是通过xml的格式来组织的。如果想修改下tomcat的端口号,可以在这里的server.xml文件进行修改,tomcat默认绑定的是8080端口。
-
lib:运行 tomcat 需要的类库。
-
logs:记载运行时的日志文件,我们有时需要查看日志,来发现定位一些问题。日志其实就是表示了Tomcat运行中的一些具体过程细节,就是通过类似于printIn这样的代码打印出来的结果。
-
temp:临时文件夹。
-
webapps: 这个目录中放的是咱们部署的servlet程序,每个servlet程序,都是一个war后缀的文件(也是一种压缩包格式)tomcat 会自动把这个war解压缩,得到一个目录。每个war其实就对应了一个webapp(相当于是一个网站),在一个Tomcat上,允许你同时部署多个webapp(多个网站)。
我这里还没部署过,因此目录里面没有.war文件。
- work:Tomcat 内部进行预编译的文件夹。
最后是一些文档,可自行阅读。
在上面的这么多文件中,我们最关注的目录就是 webapps 目录。web applications 的简称,意思是用来存放 web 应用的文件夹。
一个具有独立完整功能的 “网站”,我们就可以称为一个 “web 应用”。例如 搜狗搜索 实现了独立完整的 “搜索引擎功能”,淘宝网 实现了独立完整的 “电商功能” 。一个 Tomcat 服务器上是可以同时部署多个这样的 web 应用的。这些 web 应用以目录的形式被放到 webapps 目录中。
在webapps 目录里面,每个文件夹都对应着一个 web 应用, 可以在浏览器中分别访问每个 web 应用。
四、启动Tomcat
在 bin 目录中,双击 startup.bat 即可启动 Tomcat 服务器看到形如以下内容的日志, 说明启动成功。
问:这里为什么会出现乱码的现象呢?
答:乱码的原因是 Tomcat 默认按照 UTF-8 的编码方式处理中文, 而 windows 的 cmd 默认是 GBK 编码。如果使用 Linux 或者 IDEA 中的终端来启动 Tomcat,则没有乱码问题。 但这里产生乱码不会影响我们对Tomcat的使用。
在这里,我们要强行把cmd字符编码改成utf8也可以,但并不简单,因为cmd自身没有提供设置字符集的功能,这时我们需要修改电脑的注册表。
这个注册表是Windows 系统的总的配置中心(总指挥部)。因此我们对于注册表一定要慎重修改,一旦这里改坏了,系统可能就挂了,我们就得重装系统了。
当启动完成之后,在浏览器中输入 127.0.0.1:8080 即可看到 Tomcat 的默认欢迎页面。
有的同学在启动过程中,可能并不是很顺利,可能会出现一些问题。
1.启动失败的原因
(1)环境变量的问题。
Tomcat要想能运行,得能够找到JDK 。如何才能找到JDK?取决于你的JDK到底安装在系统的哪个位置上了。
我们可以打开环境变量查看,就可以看到最开始配置的环境变量位置了。
因此,我们得先让Tomcaat找到这个jdk的位置,才能去调用。我们把运行的脚本直接拖到cmd中运行,就能看到运行失败的原因了。比如说下面,就显示了JAVA_HOME的环境变量配置出错。
实际上类似于上述环境变量,tomcat本身会尝试配置。一般来说, tomcat都可以自动配好了,但是不排除有些情况下tomcat自动配置不生效。这个时候就可以手动配置了。
我们如何手动配置?也很简单:
(1)搜索环境变量
(2)打开,新建一个环境变量
变量值输入文件存放的路径就可:
(2)端口号被占用了
Tomcat 启动的时候默认会绑定 8080 和 8005 端口。如果有其他进程已经绑定了这两个端口中的任意一个,都会导致 Tomcat 不能启动。
在命令行中使用 netstat -ano | findstr 8080 确定看 8080 是否被其他进程绑定,把对方进程干掉,再重新启动 Tomcat 一般就可以解决问题。(如下图),形如这样的结果说明 8080 端口已经被占用. 占用的进程是 13348 这个进程。然后就可以在任务管理器中找到这个进程, 并干掉这个进程。
五、部署静态页面
1.静态页面是什么
静态页面也就是内容始终固定的页面. 即使 用户不同/时间不同/输入的参数不同 , 页面内容也不会发生变化。(除非网站的开发人员修改源代码, 否则页面内容始终不变)。
Tomcat 的主页 https://tomcat.apache.org/ 就是一个静态页面。
对应的, 动态页面指的就是用户不同/时间不同/输入的参数不同, 页面内容会发生变化.
而 B 站的主页 https://www.bilibili.com/ 就是一个典型的动态页面。
2. 部署单个 HTML
我们可以把自己写好的 HTML 部署到 Tomcat 中。
(1)在Tomcat 的 webapps/ROOT 目录中创建一个文件——test.html。
(2)写入内容:
(3) 在浏览器中通过 URL http://127.0.0.1:8080/test.html来访问。
【注意】 127.0.0.1 为环回 IP, 表示当前主机。只能在局域网内部访问,不能被其他的局域网直接访问。
那么,如何让tomcat真正做到让页面被外面的人访问,这就需要能够搞一个外网IP,去买一个云服务器,就有了一个外网IP。这里以后再写篇文章就讲。
3.部署带有 CSS / JavaScript / 图片 的 HTML
实际开发时我们的 HTML 不仅仅是单一文件, 还需要依赖一些其他的资源: CSS, JavaScript, 图片等。这些资源也要一起部署过去。
我们把写好的html复制到Tomcat 的 webapps/ROOT 中。
然后在浏览器中通过 http://127.0.0.1:8080/blog_list.html 来访问页面。
4.部署 HTML 到单独的目录中
实际开发中我们的 HTML 可能不止一个, 依赖的 CSS / JavaScript 文件也可能比较多. 这个时候就不适合全都拷贝到webapps/ROOT 目录中了(这就会显的比较乱)。我们可以创建一个单独的目录, 和 ROOT 并列, 来存放我们要部署的内容。
(1)在 webapps 中创建目录 blog, 和 ROOT 目录并列。
(2)在blog中创建文件。
(3)在浏览器中通过 http://127.0.0.1:8080/blog/blog_list.html 。
可以看到,同样可以访问到。
实际上,我们还可以把静态页面部署到远端的云服务器上,这样其他人也能访问我们的页面了。
部署在本机 Tomcat 上的页面只能在局域网内部访问, 而云服务器上的 Tomcat 可以被整个 互联网访问。
云服务器往往使用Linux 作为操作系统,这里博主暂时还在学习之中,以后再总结。
六、感想
原来实际上搞一个网站也并非很难,一点点的接近,有点小开心。等我全部学会了之后,给对象也搞个专属网站。