JAVAWeb05-Tomcat

news2025/1/19 21:10:03

1. Tomcat

1.1 概述

1.1.1 官方文档

地址: https://tomcat.apache.org/tomcat-8.0-doc/

1.1.2 WEB 开发介绍

  1. WEB,在英语中 web 表示网/网络资源(页面,图片,css,js)意思,它用于表示 WEB 服务器(主机)供浏览器访问的资源
  2. WEB 服务器(主机)上供外界访问的 Web 资源分为:
  • 静态 web 资源(如 html 页面):指 web 页面中供人们浏览的数据始终是不变。
  • 动态 web 资源,比如 Servlet(java)、PHP 等。
  1. 静态 web 资源开发技术
  • Html、CSS,js 等
  1. 常用动态 web 资源开发技术:
    Servlet、SpringBoot、SpringMVC、PHP、ASP.NET 等

1.1.3 JavaWeb 开发技术栈图-一图胜千言

在这里插入图片描述

1.1.4 BS 与 CS 开发介绍

1.1.4.1 BS 开发

  1. B: browser(浏览器, 种类太多 FireFox, chrome, ie, edge,)
  2. S: Server(服务端, 考虑很多)
  3. 示意图
    在这里插入图片描述
  4. 对 BS 的解读
    (1) 兼容性 , 因为浏览器的种类很多,发现你写的程序,在某个浏览器会出现问题,其它浏览器正常
    (2) 安全性, 通常情况下,BS 安全性不如 CS 好控制
    (3) 易用性, BS 好于 CS, 浏览器电脑有
    (4) 扩展性, BS 相对统一,只需要写 Server
    在这里插入图片描述

1.1.4.2 CS 开发

  1. C: Client(客户端)
  2. S: Server(服务端)
  3. 示意图
    在这里插入图片描述
    在这里插入图片描述

1.1.5 JavaWeb 服务软件

1.1.5.1 JavaWeb 服务器软件介绍

  1. 学习 JavaWeb 开发,需要先安装 JavaWeb 服务软件【我们把安装了 JavaWeb 服务软件主机称为 Web 服务器/JavaWeb 服务器】,然后在 web 服务器中开发相应的 web 资源。[Javaweb 服务器,Mysql 服务器]
  2. 提问:学习 JavaWeb 开发,为什么必须要先装 WEB 服务软件?
    答:需要安装, 理解 Tomcat 本质就是一个 Java 程序, 但是这个 Java 程序可以处理来自浏览器的 HTTP 请求, 和我们前面讲的 java 网络服务(多人聊天, Server)

1.1.5.2 手写简单 Web 服务程序

  1. 需求: 手写 MyWebServer.java , 让大家体验一下 JavaWeb 服务本质【先初步体会,后面还会深入 不急】,
    提醒: 这里,我们需要使用到 Java 基础(IO/网络), 看的Java 基础,
    http://localhost:9999 表示 浏览器向 localhost(127.0.0.1)表示本机的 9999 端口发出请求

在这里插入图片描述

  1. 创建 mytomcat 的 Java 应用程序.(如图)
    在这里插入图片描述

  2. 创建 E:\tedu_code\mytomcat\src\hello.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>hello</title>
</head>
<body>
    <h1>Hello, I AM WEB Server!</h1>
</body>
</html>
  1. 创建 E:\tedu_code\mytomcat\src\MyWebServer.java
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 这是我们自己写的一个web服务, 可以返回hello.html给浏览器
 */
public class MyTomcat {
    public static void main(String[] args) throws IOException {

        //1.在9999端口监听
        ServerSocket serverSocket = new ServerSocket(9999);

        //如果serverSocket 没有关闭,就等待连接, 不停的等待
        while (!serverSocket.isClosed()) {
            System.out.println("=====我的web服务在 9999端口监听=====");
            //2. 等待浏览器/客户端连接, 得到socket
            //   该socket用于通信
            Socket socket = serverSocket.accept();

            //3. 通过socket 得到 输出流,[]
            OutputStream outputStream = socket.getOutputStream();
            //   返回给浏览器/客户端
            //4. 读取 hello.html 文件返回即可=> 如何读取文件内容
            //   得到文件输入流(字符输入流), 和 src/hello.html
            BufferedReader bufferedReader =
                    new BufferedReader(new FileReader("src/hello.html"));
            String buf = "";
            //   循环读取hello.html
            while ((buf = bufferedReader.readLine()) != null) {
                outputStream.write(buf.getBytes());
            }

            outputStream.close();
            socket.close();
        }
        serverSocket.close();

    }
}

请使用火狐浏览器进行测试,谷歌等浏览器会出现异常

  1. 完成测试: 浏览器 http://localhost:9999/
    在这里插入图片描述

1.1.5.3 常用 JavaWeb 服务软件

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

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

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

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

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

1.2 Tomcat 下载和安装

  1. Tomcat 官方站点:http://tomcat.apache.org/
  2. 获取 Tomcat 安装程序包
  • tar.gz文件是Linux操作系统下的安装版本
  • zip文件是Windows系统下的压缩版本
    在这里插入图片描述
  1. 使用 zip 包安装 Tomcat(Windows)
  • 找到你需要用的 Tomcat 版本对应的 zip 压缩包,解压到需要安装的目录即可
  • 老师解压在 D:\program\apache-tomcat-8.0.50

在这里插入图片描述

  1. which version:https://tomcat.apache.org/whichversion.html ,可以看到Tomcat仍然是支持jsp 和 el
    在这里插入图片描述
    Tomcat 最好的小伙伴是 JSP+EL

1.3 Tomcat 启动

  1. 双击 bin 目录下的 startup.bat 文件
    在这里插入图片描述

  2. 输入 http://localhost:8080/,显示如下界面代表安装成功, 默认在 8080 端口
    在这里插入图片描述

  3. 注意,不要关闭黑窗口,关闭了,tomcat 服务就停止了.
    在这里插入图片描述

  4. 干货:

  • 在开发中,我们可以看一下哪些端口在监听:netstat -anb (使用管理员权限)

1.4 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. 配置 JAVA_HOME 环境变量

在这里插入图片描述
在这里插入图片描述

1.5 Tomcat 目录结构

在这里插入图片描述
说明:

  1. server.xml 用于配置 tomcat 的基本设置(启动端口,关闭端口, 主机名)
    在这里插入图片描述
    在这里插入图片描述

  2. web.xml 用于指定 tomcat 运行时配置(比如 servlet 等…)
    在这里插入图片描述

在这里插入图片描述

  1. webapps 目录是存放 web 应用,就是网站
    在这里插入图片描述
    默认访问
    在这里插入图片描述

1.6 catalina 启动 Tomcat

  1. 进入到 Tomcat 的 bin 目录下
    在这里插入图片描述
  2. 执行命令: catalina run
    在这里插入图片描述

1.7 停止 Tomcat

  1. 点击 tomcat 服务器窗口,直接点击的关闭按钮
    在这里插入图片描述
  2. 进入 Tomcat 的 bin 目录下的 shutdown.bat 双击,就可以停止 Tomcat 服务器(推荐)
    在这里插入图片描述

1.8 修改 Tomcat 服务端口

  1. Tomcat 目录下的 conf 目录,修改 server.xml 配置文件
    在这里插入图片描述
  2. 说 明:http://localhost , 默 认 是 访 问 80 端 口 , 即 http://localhost 等 价http://localhost:80

1.9 Tomcat 服务中部署 WEB 应用

  • 什么是Web应用
  1. WEB应用是多个web资源的集合。简单的说,可以把web应用理解为硬盘上的一个目录,这个目录用于管理多个web资源。
  2. Web应用通常也称之为web应用程序,或web工程,通俗的说 就是网站。
  • WEB应用组成

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

  • 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 页面

1.10 浏览器访问 Web 服务过程详解

1.10.1 回顾前面的 JavaWeb 开发技术栈图

在这里插入图片描述

1.10.2 浏览器访问 web 服务器文件 UML 时序图!!!

UML:Unified Modeling Language 统一建模语言

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

host文件所在位置:C:\Windows\System32\drivers\etc

1.11 IDEA 开发 JavaWeb 工程

1.11.1 开发 javaweb 工程 & 配置 TomCat &启动项目

  1. 需求/图解:使用 IDEA 开发 JavaWeb 工程 fishWeb , 并将网页部署到 fishWeb 工程
    在这里插入图片描述
  2. 参考开发文档

一、新建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页面的访问已经没问题了

1.11.2 注意事项和细节

  1. 热加载选项说明
    在这里插入图片描述

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

  1. 端口修改
    在这里插入图片描述

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

  1. out 目录是什么
    在这里插入图片描述

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

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

1.11.3 JavaWeb 工程的目录介绍

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

终于见识到 Python 的天花板。。

Python 有很多衍生方向&#xff0c;比如 web 开发、网络爬虫、数据分析、数据挖掘、机器学习、人工智能等等&#xff0c;就业范围是很广的&#xff0c;Python 相较于别的编程语言对小白入门还是很友好的&#xff0c; Python 入门推荐这份学习资料&#xff1a;PYTHON全案例实践…

【基础知识】PCB布局设计入门步骤

准备是成功的基石&#xff0c;在PCB设计中也是如此。改进和增长将伴随经验&#xff0c;首先做好准备能够充分利用经验获得成功。为了帮助你做好准备&#xff0c;下面分享一些基本的PCB布局设计步骤。 从良好的原材料入手是您PCB布局设计的第一步 无论打算执行什么任务&#xff…

Vue3——一文入门Vue3

Vue3的优势 1. 性能的提升 打包大小减少41% 初次渲染快55%&#xff0c;更新渲染快133% 内存减少54% … 2. 源码的升级 使用Proxy代替defineProperty实现响应式 重写虚拟DOM的实现和Tree-Shaking … 3. 拥抱TypeScript Vue3可以更好的支持TypeScript 4. 新的特性 1.C…

Java 进阶(2) Collection集合

集合的概念 概念&#xff1a;集合是java中提供的⼀种容器&#xff0c;可以⽤来存储多个数据。 数组&#xff1a;存储⼀组相同数据类型的数据结构。 局限&#xff1a;定长 集合&#xff1a;动态存放多个对象。 动态&#xff1a;集合的⼤⼩随着存储的数据量⽽改变。 多个&…

python界面开发案例:制作一个计算器软件

前言 大家早好、午好、晚好吖 ❤ ~欢迎光临本文章 在我们手机上大家都有一个计算器&#xff0c;对吧 那它这功能是怎么实现的呢&#xff1f; 今天我们在电脑上来实现一个电脑端计算器界面~ 开发环境&#xff1a; Python 3.8 / 编译器 Pycharm 2021.2版本 / 编辑器 本文所有…

leedcode刷题(5)

各位朋友们&#xff0c;大家好&#xff0c;今天是我leedcode刷题的第五篇&#xff0c;我们一起来看看吧。 文章目录栈的压入&#xff0c;弹出序列题目要求用例输入提示做题思路代码实现C语言代码实现Java代码实现最小栈题目要求用例输入提示做题思路代码实现Java代码实现栈的压…

MATLAB绘制局部放大图

MATLAB绘制局部放大图 1 工具准备 MATLAB官网-ZoomPlot(Kepeng Qiu. Matlab Central, 2022) 初始数据图绘制完成后&#xff0c;调用以下代码&#xff1a; %% 添加局部放大 zp BaseZoom(); zp.plot;1.1 具体绘制步骤 具体绘制步骤如下&#xff1a; 通过鼠标左键框选作图区…

STM-32:I2C通信协议—软件I2C读写MPU6050

目录一、I2C通信二、硬件电路三、I2C时序基本单元3.1起始和终止3.1.1起始条件3.1.2终止条件3.2发送一个字节3.3接收一个字节3.4发送应答3.5接收应答四、I2C时序4.1指定地址写4.2当前地址读4.2指定地址读4.3连续读与写五、MPU6050简介六、MPU6050参数七、硬件电路八、MPU6050框图…

用英语翻译中文-汉字英文翻译

中文转英语翻译 作为一款高效、准确的中文转英语翻译软件&#xff0c;我们的产品可以帮助全球用户更好地沟通和合作&#xff0c;实现跨文化交流。 在全球化的今天&#xff0c;中英文翻译已经成为商务、学术、娱乐等各个领域不可或缺的一部分。我们的中文转英语翻译软件是为了…

大学生必备神器

大学生要掌握的办公软件因专业和工作需求而异&#xff0c;但是以下是一些普遍适用于大学生的办公软件&#xff0c;可以帮助提高学习和工作效率&#xff0c;今天就给大家推荐几款大学生常用的软件。 1.OneDrive 这是微软出品的云存储产品&#xff0c;与百度网盘有些类似&#…

龙芯中科官方宣布,龙芯中科企业办公信息化平台全面完成国产化替代

4月4日&#xff0c;龙芯中科官方宣布&#xff0c;龙芯中科企业办公信息化平台全面完成国产化替代。龙芯 ERP 系统全系统使用国产化平台&#xff0c;私有化部署于基于龙芯 3C5000 服务器集群的虚拟化云平台上&#xff0c;使用自研 Loongnix 操作系统、自研 LoongDB 数据库及龙芯…

SpringBoot集成Milo库实现OPC UA客户端:连接、遍历节点、读取、写入、订阅与批量订阅

背景 前面我们搭建了一个本地的 PLC 仿真环境&#xff0c;并通过 KEPServerEX6 读取 PLC 上的数据&#xff0c;最后还使用 UAExpert 作为OPC客户端完成从 KEPServerEX6 这个OPC服务器的数据读取与订阅功能。在这篇文章中&#xff0c;我们将通过 SpringBoot 集成 Milo 库实现一…

idea右边找不到maven窗口不见了的多种解决方法

文章目录1. 文章引言2. 问题的多种解决方法3. 解决问题的其他方法4. 文末总结1. 文章引言 今天在从gitlab上克隆完Maven项目后&#xff0c;在idea中打开时&#xff0c;右边却不见了Maven窗口&#xff0c;如下图所示&#xff1a; 从上图中&#xff0c;你就会发现&#xff0c;明明…

JavaScript变量与基本数据类型

目录 一、声明变量 &#xff08;1&#xff09;let &#xff08;2&#xff09;const &#xff08;3&#xff09;var 二、基本类型 &#xff08;1&#xff09;undefined和null &#xff08;2&#xff09;string &#xff08;3&#xff09;number和bigin &#xff08;4&a…

C#基础复习--数组

数组 目录 数组 数组的类型 数组是对象 声明一维数组或矩形数组 实例化一维数组或矩形数组 访问数组元素 初始化数组 显式初始化一维数组 显式初始化矩形数组 快捷语法 隐式类型数组 交错数组 声明交错数组 快捷实例化 实例化交错数组 交错数组中的子数组 比较矩形数组和交…

【如何使用Arduino控制WS2812B可单独寻址的LED】

【如何使用Arduino控制WS2812B可单独寻址的LED】 1. 概述2. WS2812B 发光二极管的工作原理3. Arduino 和 WS2812B LED 示例3.1 例 13.2 例 24. 使用 WS2812B LED 的交互式 LED 咖啡桌4.1 原理图4.2 源代码在本教程中,我们将学习如何使用 Arduino 控制可单独寻址的 RGB LED 或 …

【数据结构】顺序表详解

本章要分享到内容是数据结构线性表的内容&#xff0c;那么学习他的主要内容就是对数据的增删查改的操作。 以下为目录方便阅读 目录 1.线性表中的顺序表和顺序表 2.顺序表 2.1概念和结构 2.2动态顺序表使用场景 比如我们看到的所显示出来的群成员的列表这样所展示出来的数…

Java——重建二叉树

题目链接 重建二叉树 题目描述 给定节点数为 n 的二叉树的前序遍历和中序遍历结果&#xff0c;请重建出该二叉树并返回它的头结点。 例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6}&#xff0c;则重建出如下图所示。 题目示例 示例1 输入&…

RK3568平台开发系列讲解(驱动基础篇)V4L2 用户空间 API 说明

🚀返回专栏总目录 文章目录 一、V4L2 用户空间 API二、打开视频设备三、查询设备功能沉淀、分享、成长,让自己和他人都能有所收获!😄 📢设备驱动的主要目的是控制和利用底层硬件,同时向用户展示功能。 这些用户可以是在用户空间或其他内核驱动中运行的应用。 本篇我们…

KIOPTRIX: LEVEL 5通关详解

环境配置 虚拟机网络适配器删了重新上一个就行 信息收集 漏洞发现 两个端口的web页面都没有显著的特征,尝试扫描路径,也没有扫到有价值的信息 8080端口访问被拒绝 在80端口的web页面源码中发现信息 访问 注意到title是pChart 尝试利用 可以知道有目录穿越和xss 我们可以尝…