JavaWeb 速通Tomcat

news2024/11/14 22:01:25

目录

一、拾枝杂谈

        1.web服务器说明 : 

        2.常用web服务软件 : 

二、Tomcat服务

        1.Tomcat下载和安装 : 

        2.启动Tomcat服务 : 

        3.Tomcat启动的注意事项 : 

        4.关闭Tomcat服务 : 

三、Tomcat部署

        1.Tomcat目录结构说明 : 

            1° bin

            2.conf

            3° lib

            4° logs

            5° temp

            6° webapps

            7° work

        2.关于Web应用的说明 : 

            1° 什么是web应用?

            2° web应用的组成:

            3° JavaWeb应用(程序/工程)的目录结构:

        3.Tomcat部署web应用 : 

            1° 部署方式一

            2° 部署方式二

四、Tomcat配置

        1.浏览器请求资源的流程分析 : 

        2.关于端口问题的再说明 : 

        3.IDEA配置Tomcat : 

        4.IDEA配置Tomcat的细节说明 : 

            1° 关于“热加载” : 

            2° 关于配置Tomcat时的端口 : ​​​​​​​

            3° 关于out目录 : ​​​​​​​

            4° 关于IDEA项目下目录的说明 : 

五、Tomcat总结


一、拾枝杂谈

        1.web服务器说明 : 

        把安装了 JavaWeb 服务软件的主机称为 Web 服务器/JavaWeb 服务器,web开发就是在web服务器中开发相应的web资源。

        Tomcat本质上就是一个可以用来处理浏览器请求的Java程序

        2.常用web服务软件 : 

        Tomcat:由 Apache 组织提供的一种 Web 服务器,提供对 jsp 和 Servlet 的支持。tomcat是一种轻量级的 javaWeb 容器(服务器),也是当前应用最广的 JavaWeb 服务器,并且提供免费支持

        Jboss:遵从 JavaEE 规范、支持所有的 JavaEE 规范,也是免费。

        WebLogic : Oracle 公司产品,支持 JavaEE 规范, 而且一直不断的完善以适
应新的开发要求,适合大型项目,收费,仅少数大公司使用。

        GlassFish : 由 Oracle 公司开发的一款 JavaWeb 服务器,是一款商业服务器,达到产品级质量(但应用很少)。

        Resin : CAUCHO 公司产品,是一个非常流行的服务器,对 servlet 和 JSP 提供了
良好的支持, 性能也比较优良(但需要收费)。


二、Tomcat服务

        1.Tomcat下载和安装 : 

        首先进入Tomcat官网https://tomcat.apache.org/,在左侧的Download选择要下载的版本,如下图所示 : 

        接着,选择要下载的发行版即可,如下图所示 : 

        将下载的zip解压到指定目录即可完成Tomcat的安装(解压到哪儿就安装到了哪儿)

        2.启动Tomcat服务 : 

        双击bin目录下的startup.bat文件,如下图所示 : 

        双击后会出现黑窗口,如下图所示 :

        不要关闭黑窗口,不然Tomcat服务会关闭,可以先最小化黑窗口。

        在浏览器地址栏输入"http://localhost:8080/",若成功跳转到如下页面,说明Tomcat启动成功,可以提供服务了。

        3.Tomcat启动的注意事项 : 

        Tomcat本质是一个Java程序,需要JDK的支持,Tomcat会根据JAVA_HOME的环境变量的路径使用指定JDK;因此如果JAVA_HOME环境变量没有配好,双击startup.bat不会成功(黑窗口闪一下立刻无了)。

         如果其它服务程序占用了 8080 端口,可以关闭该服务,或者修改 Tomcat 服务的默认端口 8080。PS:如果想查看正在监听端口的具体程序,需要使用管理员权限运行DOS,然后使用netstat -anb指令

        除了startup.bat方式外,还可以在bin目录下的cmd窗口,通过catalina run命令来启动Tomcat服务。

        4.关闭Tomcat服务 : 

        方式一 : 直接关闭服务窗口(不推荐,太暴力)
        方式二:双击bin目录下的shutdown.bat脚本文件(推荐shutdown.bat脚本会对Tomcat监听的8009端口发出一个关闭的指令。关闭Tomcat服务的操作会被记录在catalina日志文件中,如下图所示 : 


三、Tomcat部署

        1.Tomcat目录结构说明 : 

            1° bin

        bin目录用于存放启动和关闭Tomcat的脚本文件。例如用于启动tomcat服务的startup.bat文件,如下图所示 : 

            2.conf

        conf目录下用于存放Tomcat服务器的各种配置文件,例如server.xml和web.xml等,如下图所示 : 

        server.xml用于配置tomcat的基本设置(启动端口,关闭端口主机名);

        wex.xml用于指定tomcat运行时配置(比如Servlet..)。

            3° lib

        存放了Tomcat服务器的支撑jar包

            4° logs

        存放Tomcat的日志文件,包括登录和出现问题的日志。如下图所示 :

            5° temp

        存放临时文件

            6° webapps

        web应用所在目录;供外界访问的web应用存放在这里。如下图所示 : 

        其中,ROOT就是Tomcat8080端口默认访问的web应用。修改ROOT目录下的index.jsp文件(index.jsp是ROOTweb应用下的一个web资源),如下图所示 : 

        再次访问loaclhost:8080端口时,会发现页面被修改,如下图所示 :

        并且,访问http://localhost:8080/index.jsp也会跳转到该页面。

            7° work

        Tomcat的工作目录,用于存放Java程序编译后的class文件

        2.关于Web应用的说明 : 

            1° 什么是web应用?

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

        (2)Web应用通常也称之为web应用程序,或web工程,通俗的说就是网站。

            2° web应用的组成:

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

            3° JavaWeb应用(程序/工程)的目录结构:

                如下图所示 : 

                其中,web.xml用于确定网站的配置信息(Servlet,Filter等)

        3.Tomcat部署web应用 : 

            1° 部署方式一

        方式一:将web工程的目录拷贝到Tomcatwebapps目录下。(重点

        (1)新建一个web应用,将静态资源如html文件和图片等直接放在该web应用的目录下;

        (2)将该web应用的目录/文件夹拷贝到Tomcatwebapps目录下;

        (3)通过浏览器访问该web工程——http://IP(或者域名):port/web工程名/子目录.../具体的文件名

        PS:

        若浏览器访问的地址中没有web工程名,默认访问ROOT工程;若浏览器访问的地址中没有资源名,默认访问index.jsp页面

            2° 部署方式二

        方式二 : 通过配置文件来部署

        (1)在Tomcat下的conf目录\Catalina\localhost\,配置xml文件。(PS:Tomcat通过配置,可以把一个web应用,映射到指定的目录,可以解决磁盘空间分配的问题,比如磁盘空间不足)。

        (2)通过浏览器访问web工程——http://IP(或者域名):port/web工程名/资源


四、Tomcat配置

        1.浏览器请求资源的流程分析 : 

        浏览器会先从地址栏中解析出主机名,eg : www.baidu.com。

        浏览器到本机C:\Windows\System32\drivers\etc目录下的hosts文件中,去查询有无主机名对应的IP。如下图所示 : 

            可以通过修改+覆盖的方式来更改hosts文件的配置(直接修改会报错权限不够)。如下图所示 : 

            并且,我们可以通过配置好的IP去访问自建的web应用的资源,如下图所示 : 

         若本机的hosts文件中没有找到域名对应的IP,就会转向外网的DNS(域名系统)继续查找,如果仍然没有找到,就会提示网站找不到,如下图所示 : 

            若浏览器在hosts文件中或者在DNS服务器中成功查找到了主机名对应的IP;则会根据获取到的IP,向Tomcat发出HTTP请求

            浏览器发出的访问资源的HTTP请求如下,eg : 

GET /Cyan/cyan.html HTTP/1.1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,

image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9 Cache-Control: max-age=0 Connection: keep-alive Host: www.cyanra9.com:8080 If-Modified-Since: Fri, 14 Jul 2023 23:28:17 GMT If-None-Match: W/"307-1689377297994" Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36

        Tomcat根据浏览器发出的HTTP请求,解析出web应用(Cyan).

        Tomcat根据浏览器发出的HTTP请求,解析出web资源(cyan.html)。

        Tomcat根据资源名,获取服务器的对应web资源(获取cyan.html)。

        Tomcat以HTTP响应的方式将获取到的web资源返回给浏览器

            HTTP响应如下 : eg : 

HTTP/1.1 200 Accept-Ranges: bytes ETag: W/"307-1689377316925" Last-Modified: Fri, 14 Jul 2023 23:28:36 GMT Content-Type: text/html Content-Length: 307 Date: Fri, 14 Jul 2023 23:28:38 GMT Keep-Alive: timeout=20 Connection: keep-alive

            实际上这只是响应头(HTTP响应被人为地分成了响应头和响应体两部分)。真正的响应应该是响应头 + 响应体如下所示 :
HTTP/1.1 200 Accept-Ranges: bytes ETag: W/"307-1689377316925" Last-Modified: Fri, 14 Jul 2023 23:28:36 GMT Content-Type: text/html Content-Length: 307 Date: Fri, 14 Jul 2023 23:28:38 GMT Keep-Alive: timeout=20 Connection: keep-alive

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Cyan_RA9</title>
    </head>
    <body>
        <h1 style="border:2px cornflowerblue solid; font-family: consolas; width:150px">Cyan_RA9</h1>
        <img src="TID_02.jpg" width="450px"/>
    </body>
</html>

            响应头中"内容的长度" = 307,其实就是响应体的长度;将返回的响应体复制到文本文件中,大小正好是307bytes,如下图所示 : 

            浏览器拿到这个HTTP响应后只对响应体(此处为cyan.html)进行解析,即最终返回的就是一个HTML文件。

         浏览器解析返回的结果并显示

        PS:每申请一个新的web资源,浏览器都需要向Tomcat发送一次请求,Tomcat拿到资源后也都需要向浏览器返回一次响应。即每个web资源都需要一次请求和一次响应。eg : 下一个请求的web资源是一张图片,在响应体中可以看到它的大小,如下图所示  :

        而我们在本机上找到这张图片,查看它的属性时,发现它就是这个大小,如下图所示 :

        正是因为Tomcat“搭建了”浏览器和服务器之间沟通的“桥梁”,因此Tomcat也被称为是一种“中间件”

        2.关于端口问题的再说明 : 

         Tomcat目录下的 conf 目录,修改 server.xml 配置文件即可更改Tomcat默认的监听端口,如下图所示 : 

        PS : Tomcat默认监听8080端口;端口号范围是1~65535;建议修改端口号要>1024,最好在10000以上;修改后,重启Tomcat服务即可生效

        http://localhost,默认访问80端口,即http://localhost 等价于 http://localhost:80

        3.IDEA配置Tomcat : 

        新建一个Java项目,右键Java项目选择“Add Framework Support...”,选择“Web Application”,添加即可;IDEA会自动创建web目录(符合JavaWeb应用的目录结构),表示该Java项目已支持Web。

        IDEA右上角点击"Edit Configurations...",点击+号,选择Tomcat-->Local,如下图所示 : 

            选择Tomcat Server--->Local后,界面如下 : 

        其中,Deployment是确定网站的发布方式,一般选择Artifact(工件)。点击+添加即可,如下图所示 : 

            下面的"Application context"代表了当前JavaWeb应用的应用名称

       Server用于配置本地Tomcat的一些特点

        其中,Application Server用于选择安装的Tomcat,如下图所示 : 

        Tomcat Home目录要选择到bin目录的上一层。

        Open browser用于选择默认使用的浏览器。

        最顶部的Name,用于给配置好的Tomcat起个名字,建议作区分,如下图所示 : 

        配置完毕后点击OK,会发现Tomcat成功出现,如下图所示 : 

        配置成功后,通过指定的URL + 资源名即可访问web资源(注意——①访问的资源必须存在于当前web文件夹下,即IDEA 自动创建的web文件目录下;②配置的端口不能被其他程序占用)。

        4.IDEA配置Tomcat的细节说明 : ​​​​​​​

            1° 关于“热加载” : 

​​​​​​​        如下图所示 : 

        (1)onupdateaction:表示当出现更新操作时,Tomcat会自动更新web资源仅当jsp/html文件修改时,可以生效;如果修改的是java文件,需要Redepoly才会生效

        (2)onframedeactivation:表示当IDEA失去焦点时,会导致Tomcat自动更新web资源(同上)。

            2° 关于配置Tomcat时的端口 : ​​​​​​​

        如下图所示 :

        修改这里的监听端口只会生效于当前JavaWeb项目,并不会影响到Tomcat的server.xml文件中的配置信息

            3° 关于out目录 : ​​​​​​​

        (1)当tomcat 启动时,会生成 out 目录,该目录实质上就是原项目资源的映射,浏览器最终访问的 资源是 out 目录下的映射资源;
        (2)当我们从外部拷贝资源到当前的JavaWeb项目 ( 图片 , 文件 ,js,css )时, 如果出现“ 404无法 访问”的错误 原因是out目录下的映射文件没有与源文件同步 解决 方式 rebulid project-> 重启 Tomcat。

            4° 关于IDEA项目下目录的说明 : 

        如下图所示 : 


五、Tomcat总结

        要明确如何正确启动和关闭Tomcat服务

        熟悉Tomcat目录下,各个子目录的作用;

        掌握Tomcat的作用原理——浏览器请求并得到资源的整个流程(重要);

        掌握IDEA下配置Tomcat的具体流程;

        掌握IDEA中web项目各个文件目录的作用,包括Web工程的目录结构

        System.out.println("END-------------------------------------------------------------------------------");

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

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

相关文章

golang单元测试及mock总结

文章目录 一、前言1、单测的定位2、vscode中生成单测 二、构造测试case的注意事项1、项目初始化2、构造空interface{}3、构造结构体的time.Time类型4、构造json格式的test case 三、运行单测文件1、整体运行单测文件2、运行单个单测文件报错&#xff08;1&#xff09;command-l…

fileclude

背景知识 文件包含漏洞 题目 分析上述代码 file2被放入file_get_contents()函数&#xff0c;且要求返回值为hello ctf file1是要包含的文件&#xff0c;放在include函数中 用php://filter伪协议读取源代码 构造payload&#xff1a; file1php://filter/readconvert.base64-…

Loki+Promtail+Grafana 监控 K8s 日志

Loki 架构&#xff1a; 1、loki&#xff1a;服务端&#xff0c;负责存储日志和处理查询 2、promtail&#xff1a;采集端&#xff0c;负责采集日志发送给loki 3、grafana&#xff1a;负责采集日志的展示 创建 yaml 文件 cat loki-rbac.yaml apiVersion: v1 kind: ServiceAccount…

HarmonyOS应用开发-第一章-DevEco Studio的安装

一、前言 本栏可以帮助正在学习HarmonyOS应用开发的开发者快速上手和掌握。 二、安装步骤 首先下载DevEco Studio&#xff08;HarmonyOS应用的集成开发境&#xff09;&#xff0c;点击&#xff1a;IDE下载页面&#xff0c;点击立即下载。 下载完成后&#xff0c;双击运行安装程…

消息队列——RabbitMQ基本概念+容器化部署和简单工作模式程序

目录 基本概念 MQ 的优势 1.应用解耦 2.异步提速 3.削峰填谷 MQ 的劣势 使用mq的条件 常见MQ产品 RabbitMQ简介 RabbitMQ的六种工作模式 JMS RabbitMQ安装和配置。 RabbitMQ控制台使用。 RabbitMQ快速入门——生产者 需求: RabbitMQ快速入门——消费者 小结 基本概…

golang slice参数传递

在介绍slice函数参数传递之前&#xff0c;先介绍一下slice的结构 type slice struct {array unsafe.Pointerlen intcap int }这个应该周知了&#xff0c;也不必多解释&#xff0c;需要注意两个问题 1、如何初始化slice 我们知道初始化slice有几种方式&#xff0c;注意以…

Spring Batch之读数据—读多文件(三十三)

一、读多文件 前面的所有文件的读取基本上是对单文件执行的&#xff0c;在实际应用中&#xff0c;我们经常操作批量的文件。 Spring Batch框架提供了现有的组件MultiResourceItemReader支持对多文件的读取&#xff0c;通过MultiResourceItemReader读取批量文件非常简单。MultiR…

【算法与数据结构】144、145、94LeetCode二叉树的前中后遍历

文章目录 一、题目二、递归算法三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、递归算法 思路分析&#xff1a;这道题比较简单&#xff0c;不多说了&#xff0c;大家直接看代码就行。注意前中后遍历是指中间…

01Matlab编程基础

回忆你所学过的数学函数并给出x3.56 时以下函数的值 s i g n ( x ) , x a ( a 3 ) , sin ⁡ ( x ) , cos ⁡ ( x ) , tan ⁡ ( x 2 ) , 2 tan ⁡ ( x ) \begin{aligned}sign\left( x\right) ,x^{a}\left( a3\right) ,\sin \left( x\right) ,\cos \left( x\right) ,\tan \left(…

MiniGPT4系列之二推理篇命令行方式:在RTX-3090 Ubuntu服务器推理详解

MiniGPT4系列之一部署篇&#xff1a;在RTX-3090 Ubuntu服务器部署步骤详解_seaside2003的博客-CSDN博客 MiniGPT4系列之二推理篇命令行方式&#xff1a;在RTX-3090 Ubuntu服务器推理详解_seaside2003的博客-CSDN博客 MiniGPT4系列之三模型推理 (Web UI)&#xff1a;在RTX-309…

如何更简洁查看接口返回的树状图信息

首先&#xff0c;你的接口返回的得是树状图信息。在浏览器上访问接口&#xff1a; 按下f12 刷新页面 点击就可以看到层级关系了。当然也可以使用下面这个插件对数据进行格式化。

行列式计算

举例&#xff1a; 1.暴力计算 2.通过代数余子式计算 相关理论&#xff1a; 这个C就是上图的Aij哈&#xff0c;我拷的别人的图。 可以得出&#xff0c;行列式的值可以按照某行展开&#xff0c;展开后余子式即为一个新的行列式&#xff0c;就是原行列式删除某一行一列之后得到的…

Java 设计模式——适配器模式

目录 1.概述2.结构3.类适配器模式3.1.目标接口3.2.被适配类3.3.适配器类3.4.测试 4.对象适配器模式5.优缺点6.应用场景7.JDK 源码解析——InputStreamReader 1.概述 &#xff08;1&#xff09;如果去欧洲国家去旅游的话&#xff0c;他们的插座如下图最左边&#xff0c;是欧洲标…

vue3- 02vue3的变化

1. main.js 创建实例不再使用构造函数&#xff0c;而是使用createApp使用插件时不再通过构造函数&#xff0c;而是通过实例 2. 组件 1. this指向不同 vue2的this指向是组件vue3的this指向是proxy&#xff08;代理&#xff0c;代理的是组件实例&#xff09; <template&…

分布式软件架构——传输链路

传输链路 链路指无源的点到点的物理连接。链路是计算机网络中的一个重要概念&#xff0c;它指的是连接两个网络设备的物理或逻辑路径。简单来说&#xff0c;链路就是电信号或数据在网络中传输的路径。在计算机网络中&#xff0c;链路可以分为物理链路和逻辑链路两种。物理链路…

传承与进取的力量-节选

只简单谈如下两点&#xff1a; 传承&#xff1a;家族各类关系网总和 进取&#xff1a;个人提升获取资源和 少数人的晚餐 之前&#xff0c;每一届都会在交流中谈及&#xff0c;时间才是真正的公平公正&#xff0c;生命只有一次&#xff0c;至少在目前还没有公开报道的永生人。…

动态内存分配(2)——经典例题的讲解

前言&#xff1a; 在前面我们已经学习动态分配内存&#xff0c;今天我们就来做一做它的几道经典例题&#xff0c;加深巩固我们所学的知识。 知识复习&#xff1a;动态内存管理&#xff08;1&#xff09;_从前慢&#xff0c;现在也慢的博客-CSDN博客 题目1&#xff1a; 下面代码…

福利!打造自己的ChatGPT聊天小程序,前后端代码全开源

简介 本文分享一个我前几个月实现的一个智能聊天系统小项目&#xff0c;包含了java后端&#xff0c;微信小程序端&#xff0c;web页面端三个子工程。 代码已经全部开源&#xff0c;地址放在了文末。 最近一年&#xff0c;chatGPT的火爆程度&#xff0c;已经不需要我再多说了…

使用docker简单创建一个python容器

/root/docker_python目录结构&#xff1a; . |-- demo | -- main.py -- docker-compose.ymlmain.py内容&#xff1a; # codingutf-8 # -*- coding: utf-8 -*-if __name__ __main__:print("hello world")docker-compose.yml内容&#xff1a; version: "3&q…

Spark高级特性

spark shuffle 中 map 和 reduce 是一个相对的概念&#xff0c;map是产生一批数据&#xff0c;reduce是接收一批数据&#xff0c;前一个任务是map&#xff0c;后一个任务是reduce。 hashShuffle&#xff1a;hash分组&#xff0c;一个task里面按hash值的不同&#xff0c;分到不…