Tomcat安装及基本使用

1. 什么是Web服务器

Web服务器是一种应用程序(软件),它封装了对HTTP协议的操作,使得开发人员无需直接操作协议,从而简化了Web开发。其主要功能是提供网上信息浏览服务。
Web服务器安装在服务器端,我们可以将自己编写的Web项目部署到Web Tomcat服务器软件中。一旦Web服务器软件启动,部署在其中的页面就可以通过浏览器直接访问。
使用Web服务器软件的步骤如下:

  • 准备静态资源
  • 下载安装Web服务器软件
  • 将静态资源部署到Web服务器上
  • 启动Web服务器,使用浏览器访问对应的资源
    在本文中,我们将使用Apache下的Tomcat软件进行演示。当然,除了Tomcat之外,还有许多其他优秀的Web服务器可供选择。
    在这里插入图片描述

2. Tomcat简介

Tomcat是Apache软件基金会的一个核心项目,是一个开源免费的轻量级Web服务器,支持Servlet/JSP少量JavaEE规范。
JavaEE是Java Enterprise Edition的缩写,即Java企业版。它指的是Java企业级开发的技术规范总和,包括13项技术规范,如JDBC、JNDI、EJB、RMI、JSP、Servlet、XML、JMS等。
由于Tomcat支持Servlet/JSP规范,因此它也被称为Web容器或Servlet容器。Servlet需要依赖Tomcat才能运行。
你可以从Tomcat的官网(https://tomcat.apache.org/)上下载适合你的版本进行使用。

3. Tomcat的基本使用

我们将分两部分学习Tomcat,首先是Tomcat的基本使用,包括下载、安装、卸载、启动和关闭。

3.1 下载

你可以直接从官网下载Tomcat软件,也可以使用本文提供的资源文件中已经下载好的版本。
在这里插入图片描述

3.2 安装

Tomcat是绿色版的,只需要解压即可。

  • 在D盘的software目录下,解压apache-tomcat-8.5.68-windows-x64.zip文件,解压后会得到一个apache-tomcat-8.5.68的目录,这样Tomcat就安装成功了。
  • 注意,解压时可以选择任意目录,但最好选择一个不包含中文和空格的目录,因为在项目部署时,路径中的中文或空格可能导致部署失败。
  • 打开apache-tomcat-8.5.68目录,你会看到以下目录结构,需要了解每个目录中包含的内容:
    • bin:包含两类文件,以.bat结尾的是Windows系统的可执行文件,以.sh结尾的是Linux系统的可执行文件。
    • webapps:用于项目部署的目录。
      至此,Tomcat的安装已经完成。
      在这里插入图片描述

3.3 卸载

卸载Tomcat非常简单,只需删除安装目录即可。

3.4 启动

双击bin目录下的startup.bat文件即可启动Tomcat。
启动后,通过浏览器访问http://localhost:8080,如果能看到Apache Tomcat的内容,说明Tomcat已经成功启动。
在这里插入图片描述

注意:在启动过程中,控制台可能会出现中文乱码,需要修改conf/logging.prooperties文件。
在这里插入图片描述

3.5 关闭

Tomcat有三种关闭方式:

  • 直接关闭运行窗口(不推荐,属于强制关闭)。
  • 运行bin目录下的shutdown.bat文件,进行正常关闭。
  • 使用Ctrl+C进行正常关闭。

3.6 配置

修改端口:

  • Tomcat的默认端口是8080,如果想要修改Tomcat启动的端口号,需要修改conf/server.xml文件。
  • 在这里插入图片描述

值得注意的是,HTTP协议的默认端口号是80。如果将Tomcat的端口号改为80,则访问Tomcat时无需输入端口号。

3.7 启动时可能出现的错误

在这里插入图片描述

  • 如果设置的端口号已被占用,启动时会报错。
  • 如果Tomcat启动窗口一闪而过,需要检查JAVA_HOME环境变量是否正确配置。
    在这里插入图片描述

以上就是Tomcat的基本使用介绍。
通过本文的学习,你需要掌握以下内容:

  1. Web服务器的作用:封装HTTP协议操作,简化开发,将Web项目部署到服务器中,对外提供网上浏览服务。
  2. Tomcat是一个轻量级的Web服务器,支持Servlet/JSP少量JavaEE规范,也被称为Web容器或Servlet容器。
    希望本文能对你理解Tomcat的基本使用有所帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/58685.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ 异常

一、异常概念 异常是一种处理错误的方式,当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的直接或间接 的调用者处理这个错误。 throw: 当问题出现时,程序会抛出一个异常。这是通过使用 throw 关键字来完成的。 catch: 在您想要…

L1-043 阅览室(Python实现) 测试点全过

题目 天梯图书阅览室请你编写一个简单的图书借阅统计程序。当读者借书时,管理员输入书号并按下S键,程序开始计时;当读者还书时,管理员输入书号并按下E键,程序结束计时。书号为不超过1000的正整数。当管理员将0作为书号…

国际腾讯云账号云服务器网络访问丢包问题解决办法!!

本文主要介绍可能引起云服务器网络访问丢包问题的主要原因,及对应排查、解决方法。下面一起了解腾讯云国际云服务器网络访问丢包问题解决办法: 可能原因 引起云服务器网络访问丢包问题的可能原因如下: 1.触发限速导致 TCP 丢包 2.触发限速导致…

linux下vi或vim操作Found a swap file by the name的原因及解决方法--九五小庞

在linux下用vi或vim打开Test.java文件时 [rootlocalhost tmp]# vi Test.java出现了如下信息: E325: ATTENTION Found a swap file by the name ".Test.java.swp" owned by: root dated: Wed Dec 7 13:52:56 2011 file name: /var/tmp/Test.java modif…

Hystrix: Dashboard流监控

接上两张服务熔断 开始搭建Dashboard流监控 pom依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocat…

华为复合vlan(mux vlan)

一、概念&#xff1a; Multiplex vlan&#xff1a;实现网络资源控制的的机制。 / Principle vlan&#xff1a;port 可以和mux vlan内所有接口进行通信&#xff0c;限制128个 < /Separate vlan&#xff1a;隔离型从vlan&#xff0c;只能和…

Git 简单介绍

Git 是一个开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或小或大的项目。 一、Git 安装 windows安装&#xff1a;进入网站 https://git-scm.com/ 安装&#xff0c;ubuntu配置&#xff1a;apt install git。当前于 Win 下已安装 Git 版本 2.40.1。 二、配置 设…

一台服务器上部署 Redis 伪集群

哈喽大家好&#xff0c;我是咸鱼 今天这篇文章介绍如何在一台服务器&#xff08;以 CentOS 7.9 为例&#xff09;上通过 redis-trib.rb 工具搭建 Redis cluster &#xff08;三主三从&#xff09; redis-trib.rb 是一个基于 Ruby 编写的脚本&#xff0c;其功能涵盖了创建、管…

flutter高德地图大头针

1、效果图 2、pub get #地图定位 amap_flutter_map: ^3.0.0 amap_flutter_location: ^3.0.0 3、上代码 import dart:async; import dart:io;import package:amap_flutter_location/amap_flutter_location.dart; import package:amap_flutter_location/amap_location_option…

网络安全研究和创新:探讨网络安全领域的最新研究成果、趋势和创新技术,以及如何参与其中。

第一章&#xff1a;引言 随着数字化时代的到来&#xff0c;网络安全变得比以往任何时候都更加重要。无论是个人、企业还是国家&#xff0c;都面临着日益复杂和隐蔽的网络威胁。为了确保我们的信息和资产的安全&#xff0c;网络安全研究变得至关重要。本文将深入探讨网络安全领…

vue PDF或Word转换为HTML并保留原有样式

方法一 要将PDF或Word转换为HTML并保留原有样式&#xff0c;可以使用pdfjs-dist和mammoth.js这两个库。首先需要安装这两个库&#xff1a; npm install pdfjs-dist mammoth.js然后在Vue项目中使用这两个库进行转换&#xff1a; import * as pdfjsLib from pdfjs-dist; impor…

【机器学习】鸢尾花分类-逻辑回归示例

这段代码是一个完整的示例&#xff0c;展示了如何使用逻辑回归对鸢尾花数据集进行训练、保存模型&#xff0c;并允许用户输入数据进行预测。以下是对这段代码的总结&#xff1a;功能&#xff1a; 这段代码演示了如何使用逻辑回归对鸢尾花数据集进行训练&#xff0c;并将训练好的…

安防监控/磁盘阵列存储/视频汇聚平台EasyCVR调用rtsp地址返回的IP不正确是什么原因?

安防监控/云存储/磁盘阵列存储/视频汇聚平台EasyCVR可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有GB28181、RTSP/Onvif、RTMP等&#xff0c;以及厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等&#xff0c;能对外分发RTSP、RT…

LNMP架构之搭建Discuz论坛

LNMP 一、编译安装Nginx1&#xff09;前置准备2&#xff09;开始编译安装3&#xff09;添加到系统服务&#xff08;systemd启动&#xff09; 二、编译安装MySQL服务1&#xff09;前置准备2&#xff09;编译安装3&#xff09;编辑配置文件4&#xff09;更改mysql安装目录和配置文…

【深度学习】神经网络中 Batch 和 Epoch 之间的区别是什么?我们该如何理解?

文章目录 一、问题的引入1.1 随机梯度下降1.2 主要参数 二、Batch三、Epoch四、两者之间的联系和区别 一、问题的引入 1.1 随机梯度下降 随机梯度下降&#xff08;Stochastic Gradient Descent&#xff0c;SGD&#xff09;是一种优化算法&#xff0c;用于在机器学习和深度学习…

macOS使用命令行连接Oracle(SQL*Plus)

Author: histonevonzohomail.com Date: 2023/08/25 文章目录 SQL\*Plus安装下载环境配置 SQL\*Plus远程连接数据库参考文献 原文地址&#xff1a;https://histonevon.top/archives/oracle-mac-sqlplus数据库安装&#xff1a;Docker安装Oracle数据库 (histonevon.top) SQL*Plus…

Ansys Zemax | 手机镜头设计 - 第 2 部分:使用 OpticsBuilder 实现光机械封装

本文是3篇系列文章的一部分&#xff0c;该系列文章将讨论智能手机镜头模块设计的挑战&#xff0c;从概念、设计到制造和结构变形的分析。本文是三部分系列的第二部分。概括介绍了如何在 CAD 中编辑光学系统的光学元件以及如何在添加机械元件后使用 Zemax OpticsBuilder 分析系统…

二级MySQL(十)——单表查询

这里我们只在一个表内查询&#xff0c;用到的是较为简单的SELECT函数形式 1、查询指定的字段&#xff1a; 用到的数据库是之前提到的S、P、SP数据库 S表格用到的总数据&#xff1a; 首先我们查询所有供应商的序号和名字 这时都是独立的&#xff0c;没有关系&#xff0c;我们找…

android多屏触摸相关的详解方案-安卓framework开发手机车载车机系统开发课程

背景 直播免费视频课程地址&#xff1a;https://www.bilibili.com/video/BV1hN4y1R7t2/ 在做双屏相关需求开发过程中&#xff0c;经常会有对两个屏幕都要求可以正确触摸的场景。但是目前我们模拟器默认创建的双屏其实是没有办法进行触摸的 修改方案1 静态修改方案 使用命令…

对class文件进行base64编码

使用以下代码 package org.springframework.cloud.gateway.sample;import org.springframework.util.Base64Utils;import java.io.*; import java.nio.charset.StandardCharsets;public class EncodeShell {public static void main(String[] args){byte[] data null;try {In…