当前位置: 首页 > news >正文

【JavaWeb06】Tomcat基础入门:架构理解与基本配置指南

在这里插入图片描述

文章目录

    • 🌍一. WEB 开发
      • ❄️1. 介绍
      • ❄️2. BS 与 CS 开发介绍
      • ❄️3. JavaWeb 服务软件
    • 🌍二. Tomcat
      • ❄️1. Tomcat 下载和安装
      • ❄️2. Tomcat 启动
      • ❄️3. Tomcat 启动故障排除
      • ❄️4. Tomcat 服务中部署 WEB 应用
      • ❄️5. 浏览器访问 Web 服务过程详解
    • 🌍 三. IDEA中创建JavaWeb工程
      • ❄️1. 流程
      • ❄️2. 注意事项和细节


🙋‍♂️ 作者:@whisperrr.🙋‍♂️

👀 专栏:JavaWeb👀

💥 标题:【JavaWeb06】Tomcat基础入门:架构理解与基本配置指南💥

❣️ 寄语:比较是偷走幸福的小偷❣️

🌍一. WEB 开发

❄️1. 介绍

1.WEB,在英语中 web 表示网/网络资源(页面,图片,css,js)意思,它用于表示 WEB 服务器(主机)供浏览器访问的资源
2. WEB 服务器(主机)上供外界访问的 Web 资源分为:

  • 静态 web 资源(如 html 页面):指 web 页面中供人们浏览的数据始终是不变。
  • 动态 web 资源,比如 Servlet(java)、PHP 等。

3.静态 web 资源开发技术

  • Html、CSS,js 等

4.常用动态 web 资源开发技术:Servlet、SpringBoot、SpringMVC、PHP、ASP.NET
在这里插入图片描述

❄️2. BS 与 CS 开发介绍

1 BS 开发

B: browser(浏览器, 种类太多 ff, chrome, ie, edge,)
S: Server(服务端, 考虑很多)

笔者对 BS 的解读

(1) 兼容性 , 因为浏览器的种类很多,发现你写的程序,在某个浏览器会出现问题,其它浏览器正常
(2) 安全性, 通常情况下,BS 安全性不如 CS 好控制
(3) 易用性, BS 好于 CS, 浏览器电脑有
(4) 扩展性, BS 相对统一,只需要写 Server
在这里插入图片描述

❄️3. JavaWeb 服务软件

1 JavaWeb 服务器软件介绍

学习 JavaWeb 开发,需要先安装 JavaWeb 服务软件【我们把安装了 JavaWeb 服务软件主机称为 Web 服务器/JavaWeb 服务器】,然后在 web 服务器中开发相应的 web 资源。[Javaweb 服务器,Mysql 服务器]

2.学习 JavaWeb 开发,为什么必须要先装 WEB 服务软件?

答:需要安装, 理解 Tomcat 本质就是一个 Java 程序, 但是这个 Java 程序可以处理来自浏览器的 HTTP 请求, 和我们前面讲的 java 网络服务(多人聊天, Server)常用 JavaWeb 服务软件.

3.Tomcat:由 Apache 组织提供的一种 Web 服务器,提供对 jsp 和 Servlet 的支持。它是一种轻量级的 javaWeb 容器(服务器),也是当前应用最广的 JavaWeb 服务器(免费)。
在这里插入图片描述

4.Jboss:是一个遵从 JavaEE 规范的、它支持所有的 JavaEE 规范(免费)。
在这里插入图片描述

5.GlassFish: 由 Oracle 公司开发的一款 JavaWeb 服务器,是一款商业服务器,达到产品级质量(应用很少)。
在这里插入图片描述

6.Resin:是 CAUCHO 公司的产品,是一个非常流行的服务器,对 servlet 和 JSP 提供了良好的支持, 性能也比较优良(收费)。
在这里插入图片描述

7.WebLogic【很猛】:是 Oracle 公司的产品,支持 JavaEE 规范, 而且不断的完善以适应新的开发要求,适合大型项目(收费,用的不多,适合大公司)。
在这里插入图片描述

🌍二. Tomcat

❄️1. Tomcat 下载和安装

  • Tomcat 官方站点:http://tomcat.apache.org/
  • 获取 Tomcat 安装程序包
  • tar.gz文件是Linux操作系统下的安装版本
  • zip文件是Windows系统下的压缩版本
  • 使用 zip 包安装 Tomcat
  • 找到你需要用的 Tomcat 版本对应的 zip 压缩包,解压到需要安装的目录即可
  • 笔者解压在 D:\program\apache-tomcat-8.0.50
  • which version https://tomcat.apache.org/whichversion.html ,可以看到Tomcat仍然是支持jsp 和 el
    在这里插入图片描述
    Tomcat 最好的小伙伴是 JSP+EL

❄️2. Tomcat 启动

  1. 双击 bin 目录下的 startup.bat 文件

  2. 输入 http://localhost:8080/,显示如下界面代表安装成功, 默认在 8080 端口

  3. 注意,不要关闭黑窗口,关闭了,tomcat 服务就停止了.

  4. 小技巧:
    (1) 在开发中,我们可以看一下哪些端口在监听
    (2) netstat -anb (使用管理员权限)

❄️3. Tomcat 启动故障排除

  1. 双击 startup.bat 文件,出现一个小黑窗口然后就没了,原因是因为没有配置好JAVA_HOME 环境变量Tomcat 本质是一个 Java 程序,所以要 jdk, 会去根据 JAVA_HOME 使用指定 jdk
  2. JAVA_HOME 必须全大写
  3. JAVA_HOME 中间必须是下划线
  4. JAVA_HOME 配置的路径只需要配置到 jdk 的安装目录即可。不需要带上 bin 目录
  5. 端口 8080 被占用 [查看端口 netstat -anb, 使用的非常多]
  6. 如果其它服务程序占用了 8080 端口,可以关闭该服务,或者修改 Tomcat 服务的默认
    端口 8080 [后面讲]
  7. 配置 JAV A_HOME 环境变量

一图知Tomcat目录结构

在这里插入图片描述

  1. server.xml 用于配置 tomcat 的基本设置(启动端口,关闭端口, 主机名, 修改 Tomcat 服务端口)=
  2. web.xml 用于指定 tomcat 运行时配置(比如 servlet 等…)
  3. webapps 目录是存放 web 应用,就是网站

❄️4. Tomcat 服务中部署 WEB 应用

1.什么是Web应用

WEB应用是多个web资源的集合。简单的说,可以把web应用理解为硬盘上的一个目录,
这个目录用于管理多个web资源。

2.Web应用通常也称之为web应用程序,或web工程,通俗的说 就是网站。
3.WEb应用组成

一个 WEB 应用由多个 WEB 资源或其它文件组成,包括 html 文件、css 文件、js 文件、动态 web 页面、java 程序、支持 jar 包、配置文件等。开发人员在开发 web 应用时,按照规定目录结构存放这些文件。否则,在把 web 应用交给 web 服务器管理时,不仅可能会使web 应用无法访问,还会导致 web 服务器启动报错。

4.JavaWeb程序/应用/工程目录结构
在这里插入图片描述

部署方式1: 将 web 工程的目录拷贝到 Tomcat 的 webapps 目录下

  1. news Web工程(目前都是静态资源 html, 图片)
  2. 将该news目录/文件夹 拷贝到 Tomcat 的webapps目录下
  3. 浏览器输入: http://ip[域名]:port/news/子目录…/文件名

部署方式2:通过配置文件来部署(只做介绍)
1.在Tomcat 下的 conf 目录\Catalina\localhost\ 下,配置文件,比如hsp.xml(提醒:知道Tomcat通过配置,可以把一个web应用,映射到指定的目录,可以解决磁盘空间分配的问题.)
2.访问web工程: http://ip[域名]:port/hsp/index.html 就表示访问 D:\album 目录下的index.html

ROOT 的工程的访问

  1. 在浏览器地址栏中输入访问地址如下:http://ip[域名]:port,没有Web工程/应用名时,默认访问的是 ROOT 工程
  2. 在浏览器地址栏中输入的访问地址如下: http://ip[域名]:port/工程名/ ,没有资源名,默认访问 index.jsp 页面

❄️5. 浏览器访问 Web 服务过程详解

下面,我们对浏览器访问 web 服务器资源(html,css,图片,js)做详解,通过一个时序图加强对这个重要过程的理解, 重要,核心
在这里插入图片描述

🌍 三. IDEA中创建JavaWeb工程

说明:IDEA2020.2.2 版本创建JavaWeb工程 和以前的版本变化较大.~

❄️1. 流程

一、新建javaweb工程
1.先创建一个java项目

2.在新建好的项目上点击右键,点Add Framework Support
在这里插入图片描述

3.点击导入Web Application,点击ok即可
在这里插入图片描述

二、配置TomCat&启动项目
1.点击右上角的编辑配置
在这里插入图片描述

2.点击+号,找到Tomcat Server
在这里插入图片描述

3.选择一个本地下载好的Tomcat
在这里插入图片描述

Name : 在命名时,建议写成JavaWeb 名,比如 news_tomcat8 或者 crm_tomcat8
这样,当有多个web项目时,就可以明确应当启动哪个web项目,不乱

4.在右边的部署栏Deployment中点击+号,添加构建
在这里插入图片描述

+: 将要部署的web工程,加入到Tomcat运行实例中.
-:从Tomcat实例中,删除不需要的web 模块

5.这里可以选择只保留“/”
在这里插入图片描述

Application Context 是工程路径
建议改成当前Web工程名(项目名),比如 /news , /crm 等, 更好区分.

6.选择热加载,点击ok完成运行环境部署
在这里插入图片描述

HTTP port 可以指定运行Tomcat端口, 不会修改server.xml, 只是针对当前配置在 Open browser After launch 可以下拉,选择默认运行的浏览器

7.运行Tomcat,访问项目:这里注意要直接选择Tomcat,点击运行按钮,而不是在jsp页面上右键点击运行,这样会访问不到页面
在这里插入图片描述

8.可以看到tomcat启动成功后,会自动跳转到浏览器打开页面

在这里插入图片描述

到这里,jsp页面的访问已经没问题了

❄️2. 注意事项和细节

1.热加载选项说明

在这里插入图片描述
(1) on update action : 表示当我们更新操作是, Tomcat 会自动更新类和资源 (当jsp/html文件修改时,可以生效, 但是如果你修改的 java 文件, 需要 Redepoly 才会生效)
(2) on frame deactivation : 表示 IDEA 失去焦点(比如最小化), 也会导致 jsp/html 发生更新 , 但是 java 修改了,还是需要 redeploy.

2.端口修改

在这里插入图片描述

这里修改的端口, 只会影响到当前的项目,而不是去修改 server.xml

3.out 目录是什么

当 tomcat 启动时,会生成 out 目录,该目录就是 原项目资源的映射,我们浏览器访问的资源是 out 目录

4.当我们从外部拷贝资源到项目(图片, 文件, js , css 等), 如果出现 404 不能访问错误, 解决方式 rebulid project -> 重启 Tomcat
5.一图了解web项目结构
在这里插入图片描述

相关文章:

【JavaWeb06】Tomcat基础入门:架构理解与基本配置指南

文章目录 🌍一. WEB 开发❄️1. 介绍 ❄️2. BS 与 CS 开发介绍 ❄️3. JavaWeb 服务软件 🌍二. Tomcat❄️1. Tomcat 下载和安装 ❄️2. Tomcat 启动 ❄️3. Tomcat 启动故障排除 ❄️4. Tomcat 服务中部署 WEB 应用 ❄️5. 浏览器访问 Web 服务过程详…...

安卓日常问题杂谈(一)

背景 关于安卓开发中,有很多奇奇怪怪的问题,有时候这个控件闪一下,有时候这个页面移动一下,这些对于快速开发中,去查询,都是很耗费时间的,因此,本系列文章,旨在记录安卓…...

Kitchen Racks 2

Kitchen Racks 2 吸盘置物架 Kitchen Racks-CSDN博客...

嵌入式学习笔记-杂七杂八

文章目录 连续波光纤耦合激光器工作原理主要特点应用领域设计考虑因素 数值孔径(Numerical Aperture,简称NA)数值孔径的定义数值孔径的意义数值孔径的计算示例数值孔径与光纤 四象限探测器检测目标方法四象限划分检测目标的步骤1. 数据采集2.…...

14-7C++STL的stack容器

(一)stack容器的入栈与出栈 (1)stack容器的简介 stack堆栈容器,“先进后出”的容器,且stack没有迭代器 (2)stack对象的默认构造 stack采用模板类实现,stack对象的默认…...

Vue 3 中的响应式系统:ref 与 reactive 的对比与应用

Vue 3 的响应式系统是其核心特性之一,它允许开发者以声明式的方式构建用户界面。Vue 3 引入了两种主要的响应式 API:ref 和 reactive。本文将详细介绍这两种 API 的用法、区别以及在修改对象属性和修改整个对象时的不同表现,并提供完整的代码…...

物业巡更系统助推社区管理智能化与服务模式创新的研究与应用

内容概要 在现代社区管理中,物业巡更系统扮演着至关重要的角色。首先,我们先来了解一下这个系统的概念与发展背景。物业巡更系统,顾名思义,是一个用来提升物业管理效率与服务质量的智能化工具。随着科技的发展,传统的…...

windows蓝牙驱动开发-生成和发送蓝牙请求块 (BRB)

以下过程概述了配置文件驱动程序生成和发送蓝牙请求块 (BRB) 应遵循的一般流程。 BRB 是描述要执行的蓝牙操作的数据块。 生成和发送 BRB 分配 IRP。 分配BRB,请调用蓝牙驱动程序堆栈导出以供配置文件驱动程序使用的 BthAllocateBrb 函数。;初始化 BRB…...

Linux网络之序列化和反序列化

目录 序列化和反序列化 上期我们学习了基于TCP的socket套接字编程接口,并实现了一个TCP网络小程序,本期我们将在此基础上进一步延伸学习,实现一个网络版简单计算器。 序列化和反序列化 在生活中肯定有这样一个情景。 上图大家肯定不陌生&a…...

linux设置mysql远程连接

首先保证服务器开放了mysql的端口 然后输入 mysql -u root -p 输入密码后即可进入mysql 然后再 use mysql; select user,host from user; update user set host"%" where user"root"; flush privileges; 再执行 select user,host from user; 即可看到变…...

react-native网络调试工具Reactotron保姆级教程

在React Native开发过程中,调试和性能优化是至关重要的环节。今天,就来给大家分享一个非常强大的工具——Reactotron,它就像是一个贴心的助手,能帮助我们更轻松地追踪问题、优化性能。下面就是一份保姆级教程哦! 一、…...

erase() 【删数函数】的使用

**2025 - 01 - 25 - 第 48 篇 【函数的使用】 作者(Author) 文章目录 earse() - 删除函数一. vector中的 erase1 移除单个元素2 移除一段元素 二. map 中的erase1 通过键移除元素2 通过迭代器移除元素 earse() - 删除函数 一. vector中的 erase vector 是一个动态数组&#x…...

性能测试丨内存火焰图 Flame Graphs

内存火焰图的基本原理 内存火焰图是通过分析堆栈跟踪数据生成的一种图形化表现,能够展示应用程序在运行时各个函数的内存占用情况。火焰图的宽度代表了函数占用的内存量,而火焰的高度则显示了函数在调用栈中的层级关系。通过这种可视化方式,…...

AIGC的企业级解决方案架构及成本效益分析

AIGC的企业级解决方案架构及成本效益分析 一,企业级解决方案架构 AIGC(人工智能生成内容)的企业级解决方案架构是一个多层次、多维度的复杂系统,旨在帮助企业实现智能化转型和业务创新。以下是总结的企业级AIGC解决方案架构的主要组成部分: 1. 技术架构 企业级AIGC解决方…...

Linux 入门 常用指令 详细版

欢迎来到指令小仓库!! 宝剑锋从磨砺出,梅花香自苦寒来 什么是指令? 指令和可执行程序都是可以被执行的-->指令就是可执行程序。 指令一定是在系统的每一个位置存在的。 1.ls指令 语法: ls [选项][目…...

【R语言】流程控制

R语言中&#xff0c;常用的流程控制函数有&#xff1a;repeat、while、for、if…else、switch。 1、repeat循环 repeat函数经常与 break 语句或 next 语句一起使用。 repeat ({x <- sample(c(1:7),1)message("x ", x, ",你好吗&#xff1f;")if (x …...

猿人学第一题 js混淆源码乱码

首先检查刷新网络可知&#xff0c;m参数被加密&#xff0c;这是一个ajax请求 那么我们直接去定位该路径 定位成功 观察堆栈之后可以分析出来这应该是一个混淆&#xff0c;我们放到解码平台去还原一下 window["url"] "/api/match/1";request function…...

计算机组成原理(2)王道学习笔记

数据的表示和运算 提问&#xff1a;1.数据如何在计算机中表示&#xff1f; 2.运算器如何实现数据的算术、逻辑运算&#xff1f; 十进制计数法 古印度人发明了阿拉伯数字&#xff1a;0&#xff0c;1&#xff0c;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;6&#…...

【AI日记】25.01.26

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】【读书与思考】 AI kaggle 比赛&#xff1a;Forecasting Sticker Sales 读书 书名&#xff1a;自由宪章 律己 AI&#xff1a;6 小时作息&#xff1a;00:30-8:30短视频&#xff1a;大于 1 小时读书和写作&a…...

三. Redis 基本指令(Redis 快速入门-03)

三. Redis 基本指令(Redis 快速入门-03) 文章目录 三. Redis 基本指令(Redis 快速入门-03)1. Redis 基础操作&#xff1a;2. 对 key(键)操作&#xff1a;3. 对 DB(数据库)操作4. 最后&#xff1a; Reids 指定大全(指令文档)&#xff1a; https://www.redis.net.cn/order/ Redis…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

AtCoder 第409​场初级竞赛 A~E题解

A Conflict 【题目链接】 原题链接&#xff1a;A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串&#xff0c;只有在同时为 o 时输出 Yes 并结束程序&#xff0c;否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成&#xff0c;核心是利用 HTTP 协议的 Range 请求头指定下载范围&#xff1a; 实现原理 Range 请求头&#xff1a;向服务器请求文件的特定字节范围&#xff08;如 Range: bytes1024-&#xff09; 本地文件记录&#xff1a;保存已…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天&#xff0c;数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具&#xff0c;在大规模数据获取中发挥着关键作用。然而&#xff0c;传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时&#xff0c;常出现数据质…...