Tomcat和Servlet了解

一,服务器概述

先了解下主机-系统-容器和程序这几个之间的关系.

go 复制代码
主机:主机是指一台计算机设备,可以是物理服务器或虚拟服务器,用于存储数据、运行应用程序和提供服务。在这种情况下,主机是托管Ubuntu(Linux系统)、Tomcat和Java程序的计算机设备。

Ubuntu(Linux系统):Ubuntu是一种流行的Linux操作系统,具有开源、稳定和安全的特点。Linux系统提供了一个稳定的操作环境和丰富的命令行工具,适合用于服务器环境。您可以在主机上安装Ubuntu作为操作系统来托管和运行应用程序。

Tomcat:Tomcat是一个开源的Servlet容器,用于运行Java Servlet和JavaServer Pages(JSP)等Java Web应用程序。您可以在主机上安装和配置Tomcat,将其作为Java Web应用程序的运行环境。

Java程序:Java程序是使用Java编程语言编写的应用程序,可以在Java虚拟机(JVM)上运行。在这种情况下Java程序通常是指Java Web应用程序,如Servlet和JSP等。这些Java程序可以部署在Tomcat这样的Servlet容器中,并在主机上运行。

也就是说,我们平时所说的服务器,就是安装了服务器软件的计算机.而服务器软件的作用就是:接收用户的请求,处理请求,做出响应.

我们常常听见后端同事说的tomcat就是一种web服务器.

二,tomcat

Web应用开发好后,若想供外界访问,需要把web应用所在目录交给Web服务器管理(Tomcat就是Web服务器之一),这个过程称之为虚似目录的映射。

Tomcat是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量JavaEE规范,所以Tomcat即是Web容器,也是Servlet容器.

它的主要作用是:

go 复制代码
封装HTTP协议操作
部署和管理web项目
接收 HTTP 请求,然后将响应返回给客户端的软件或设备

因为我用的是mac,这里就记录下mac电脑下的tomcat的安装与使用.

2,1,tomcat的下载

打开tomcat官网,选择合适的版本下载,然后解压,复制到/Library文件夹下,至于苹果系统怎么打开这个文件夹,可以打开控制台,直接open /Library即可打开.

2.2,tomcat的使用

通过终端Terminal打开Tomcat中的bin目录,操作命令如下:

go 复制代码
cd /Library/Tomcat/bin

授权使用Tomcat bin目录下的所有操作,操作命令如下:

go 复制代码
sudo chmod 755 *.sh

回车使用后,需要输入管理员密码.

启动Tomcat,需要在bin目录,操作命令如下:

go 复制代码
 sudo sh ./startup.sh

然后访问localhost:8080就可以看到了:

关闭Tomcat,操作命令如下(先切换Tomcat中的bin目录)

go 复制代码
cd ~/Library/Tomcat/bin
sh ./shutdown.sh

这里我们所访问的其实就是webapps下的ROOT文件夹.

2.3,利用tomcat直接部署项目:直接复制

上文说到,tomcat可以作为一个web服务器,localhost:8080访问到的是webapps文件夹.里面的每一个文件夹都代表着一个web项目.

于是就可以把一个前端项目部署到webapps目录下试试:

2.4,webapps文件下的项目结构

web站点的目录是有规范的:

go 复制代码
|-- webapp                         # 站点根目录
    |-- META-INF                   # META-INF 目录
    |   `-- MANIFEST.MF            # 配置清单文件
    |-- WEB-INF                    # WEB-INF 目录
    |   |-- classes                # class文件目录
    |   |   |-- *.class            # 程序需要的 class 文件
    |   |   `-- *.xml              # 程序需要的 xml 文件
    |   |-- lib                    # 库文件夹
    |   |   `-- *.jar              # 程序需要的 jar 包
    |   `-- web.xml                # Web应用程序的部署描述文件
    |-- <userdir>                  # 自定义的目录
    |-- <userfiles>                # 自定义的资源文件

那么,tomcat作为一个web容器的部分讲完了,后续来讲讲tomcat为啥又是一个servlet容器.

三, Servlet

Servlet是平台独立的Java类,编写一个Servlet,实际上就是按照Servlet规范编写一个Java类。Servlet被编译为平台独立的字节码,可以被动态地加载到支持Java技术的Web服务器中运行。

客户端请求和响应的流程如下:

go 复制代码
1)客户端(通常都是浏览器)访问Web服务器,发送HTTP请求。
2)Web服务器接收到请求后,传递给Servlet容器(tomcat)。
3)Servlet容器(tomcat)加载Servlet,产生Servlet实例后,向其传递表示请求和响应的对象。
4)Servlet实例使用请求对象得到客户端的请求信息,然后进行相应的处理。
5)Servlet实例将处理结果通过响应对象发送回客户端,容器负责确保响应正确送出,同时将控制返回给Web服务器

按照这个说法,我们可以将Servlet视为HTTP请求的拦截器和处理器.

接下来,就可以利用tomcat和servlet来部署一个helloworld应用.

具体可以参考这篇文章:
https://zhuanlan.zhihu.com/p/649220226

其中在使用tomcat插件部署时,会报错:"Directory is invalid /Library/Tomcat/conf/Catalina"

这是因为权限不够,进入对应的tomcat文件夹,然后修改权限即可:

go 复制代码
 sudo chmod 777 Catalina

最后实现的效果:

相关推荐
LiuYaoheng18 小时前
【Android】View 的基础知识
android·java·笔记·学习
勇往直前plus19 小时前
Sentinel微服务保护
java·spring boot·微服务·sentinel
星辰大海的精灵19 小时前
SpringBoot与Quartz整合,实现订单自动取消功能
java·后端·算法
小鸡脚来咯19 小时前
一个Java的main方法在JVM中的执行流程
java·开发语言·jvm
江团1io019 小时前
深入解析三色标记算法
java·开发语言·jvm
天天摸鱼的java工程师19 小时前
RestTemplate 如何优化连接池?—— 八年 Java 开发的踩坑与优化指南
java·后端
你我约定有三19 小时前
java--泛型
java·开发语言·windows
杨杨杨大侠19 小时前
第3章:实现基础事件总线
java·github·eventbus
杨杨杨大侠19 小时前
第4章:添加注解支持
java·github·eventbus
咖啡Beans19 小时前
异步处理是企业开发的‘生存之道’!Java8和Spring的异步实现,你必须搞清楚!
java·后端