JavaWeb 12.Tomcat10

news2024/11/17 21:18:36

希望明天能出太阳

或者如果没有太阳的话

希望我能变得更加阳光一点

                                        —— 24.9.25

一、常见的JavaWeb服务器

Web服务器通常由硬件和软件共同构成

硬件:电脑,提供服务供其他客户电脑访问

软件:电脑上安装的服务器软件,安装后能提供服务给网络中的其他计算机,将本地文件映射成一个虚构的url地址供网路中的其他人访问

二、Tomcat

1.TomCat简介

Tomcat是当前应用最广泛的JavaWeb服务器

Tomcat是Apache软件基金会(Apache Software foundation)的Jakarta项目中的一个核心项目,由Apache、sun 和其他一些公司及个人共同开发而成。最新的serviet和JSP 规范总是能在Tomcat 中得到体现,因为Tomcat技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。

TomCat——JavaWeb服务器

2.TomCat下载安装

Tomcat下载官网:http://tomcat.apache.org/

TomCat10与TomCat8、TomCat9代码不能互通

TomCat10需要的JDK版本是jdk11以后的版本

点击starup启动tomcat

启动后在浏览器输入:localhost:8080,显示如下页面:

关闭时点击shutdown文件将其关闭

或将CMD窗口直接关闭,就可以将TomCat关闭

在显示登陆文件时,出现中文乱码问题:应修改TomCat配置文件Conf,修改字符集格式,以解决中文乱码问题

寻找文件中的ConsoleHandler项,修改字符编码

3.TomCat目录及测试

bin目录

该目录下存放的是二进制可执行文件,如果是安装版,那么这个目录下会有两个exe文件:tomcat10.exe、tomcat10w.exe,前者是在控制台下启动Tomcat,后者是弹出GUI窗口启动Tomcat;如果是解压版,那么会有startup.bat和shutdown.bat文件,startup.bat用来启动Tomcat,但需要先配置JAVA HOME环境变量才能启动,shutdown.bat用来停止Tomcat;

conf目录

是一个非常非常要的目录,这个目录下有四个最为重要的文件:

① server.xml:配置整个服务器信息。例如修改端口、端口号。默认HTTP请求的端口号是:8080

② tomcat-users.xml:管理类型账户的账号密码,存储tomCat用户的文件,这里保存的是tomCat的用户名及密码,以及用户的角色信息。可以按着该文件中的注释信息添加tomCat用户,然后就可以在Tomcat主页中进入Tomcat Manager页面了;

③ web.xml:部署项目的公共特征,部署描述符文件,这个文件中注册了很多MIME类型,即文档类型。这些MIME类型是客户端与服务器之间说明文档类型的,如用户请求一个html网页,那么服务器还会告诉客户端浏览器响应的文档是text/html类型的,这就是一个MIME类型。客户端浏览器通过这个MIME类型就知道如何处理它了。当然是在浏览器中显示这个html文件了。但如果服务器响应的是一个exe文件,那么浏览器就不可能显示它,而是应该弹出下载窗口才对。MIME就是用来说明文档的内容是什么类型的

④ context.xml:对所有应用的统一配置,通常我们不会去配置它。

⑤ logging.properties:控制打印日志行为和打印日志特征(控制乱码问题)

⑤ Catalina:Catalina引擎相关配置,配置项目时放一些配置信息

lib目录

Tomcat的类库,里面是一大堆jar文件。如果需要添加TomCat 依赖的jar文件,可以它到这个目录中,当然也可以把应用依赖的jar文件放到这个目录中,这个目录中的jar包所有项目都可以共享之,但这样你的应用放到其他TomCat下时就不能再共享这个目录下的jar包 了,所以建议只把TomCat需要的jar包放到这个目录下;

logs目录

logs:这个目录中都是文件,记录了Tomcat 启动和关闭的信息,如果启动Tomcat时有错误,那么异常也会记录在日志文件中,存放日志文件(不经常使用可以手动清除)。

temp目录

temp:存放Tomcat的临时文件,这个目录下的东西可以在停止Tomcat后删除

⭐Webapps目录

webapps:存放web项目的目录,其中每个文件夹都是一个项目,如果这个目录下已经存在了目录 ,那么都是tomcat自带的项目。其中ROOT是一个特殊的项目,在地址栏中访问:http://127.0.0. 1.8080,没有给出项目目录时,对应的就是ROOT项目:http://localhost:8080/examples,进入示例项目。其中examples就是项目名,即文件夹的名字。

启动webapps中TomCat自带的web项目:

        ① 启动TomCat

        ② 逐层输入对应项目的url

        ③ 打开项目

上面地址栏的examples叫做项目的上下文路径,也叫做项目的访问路径

下面的examples叫做项目的部署目录

work目录

work:与JSP技术有关,运行时生成的文件,最终运行的文件都在这里。通过webapps中的项目生成的,可以把这个目录下的内容删除,再次运行时会生再次生成work目录。当客户端用户访问一个JSP文件时,Tomcat会通过JSP生成Java文件,然后再编译Java文件生成class文件,生成的java和class文件都会存放到这个目录下,

LICENSE 许可证目录。

NOTICE 说明文件目录。

4.Web项目的标准架构

部署项目的第一种方式

WEB-INF目录下的资源是受保护的资源,是不可以通过浏览器直接访问的资源

将图片、CSS文件、JS文件放在一个static文件夹下

WEB-INF目录:字节码根路径文件classes、项目中的第三方jar包依赖存放路径lib、当前项目的配置文件web.xml

标准的app目录结构

部署项目的第二种方式

将编译好的项目打成war包放在webapps目录下,tomcat启动后会自动解压war包

部署项目的第三种方式

可以将项目放在非webapps的其他目录下,部署conf文件夹中,在tomcat中通过配置文件指向app的实际磁盘路径

默认访问文件夹中的index.html资源

root目录中的资源访问不需要添加上下文

manager文件和host-manager文件访问时需要提供账号和密码,账号和密码在conf文件夹下的tomcat-users下设置

设置后按照用户登录,即可以访问manager文件和host-manager文件

5.IDEA中开发并部署运行WEB项目

① IDEA关联本地TomCat

② 使用idea创建一个JavaWeb工程,在Web工程中开发代码

推荐先创建一个空项目,这样可以在一个空项目下同时存在多个modules,不用后续氺回切换之前的项目,当然也可以忽路此步直接创建web项目

首先在web项目中指定SDK

创建一个web项目模块

添加TomCat10的依赖

help中点击Find Action 搜索Add Framework Support

版本号若不够,提升版本号

给项目添加TomCat10依赖

添加web资源组件,版本号提升

多出一个web资源组件,此时是一个Java Web项目

将index.jsp文件删除

在web文件夹中添加html文件

在html文件中引入js文件和css文件

把lib文件夹中的jar包添加到当前文件夹中的依赖

③ 使用idea将工程构建成一个可以发布的app

APP文件

④ 使用idea将构建好的app部署到tomCat中,启动运行

点击Edit Configurations,将项目部署在TomCat上运行

将项目拖拽上来

修改路径名为web01

设置server配置

启动TomCat打开网页

自启动打开网页

6.idea部署并运行项目的原理

        idea有接进将编好的项目入Tomcat的webapps中;

        idea根据关联的Tomcat,创建了一个Tomcat副本,将项目部署到了这个副本中;

        idea的Tomcat副本在C:\用户\前用户\AppData\Local\JetBrains\IntelliJIdea2022.2\tomcat\中;

        idea的Tomcat本不是一个完整的tomcat,副本里只是准备了和当前项目相关的配置文件而已;

        idea启动Tomcat时,是副本Tomcat程序按照Tomcat副本的配置文件运行;

        idea的Tomcat副本部署项目的模式是通过conf/Catalina/localhost/*.xml配置文件的形式实现项目部署的;

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

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

相关文章

【鸿蒙HarmonyOS NEXT】数据存储之分布式键值数据库

【鸿蒙HarmonyOS NEXT】数据存储之分布式键值数据库 一、环境说明二、分布式键值数据库介绍三、示例代码加以说明四、小结 一、环境说明 DevEco Studio 版本: API版本:以12为主 二、分布式键值数据库介绍 KVStore简介: 分布式键值数据库…

手机电脑无缝对接,虫洞软件让多屏协同触手可及

在数字化时代,我们的日常生活和工作越来越依赖于电子设备,尤其是智能手机和电脑。但你是否曾因在手机和电脑之间频繁切换而感到烦恼?现在,有了虫洞软件,这一切都将成为过去式。 虫洞——电脑与手机的桥梁 虫洞软件&a…

Kubernetes整体架构与核心组件

一个 Kubernetes 集群的机器节点有两种角色—— Master 和 Node,都可由一个或多个节点组成,且同一个节点可以既是 Master 也是 Node。其中 Master 节点负责全局决策、资源调度、Node 与 Pod 管理,等等,属于管控节点;No…

【unity进阶知识4】封装unity协程工具,避免 GC(垃圾回收)

文章目录 前言封装协程工具类,避免 GC(垃圾回收)使用1.使用默认方式使用协程2.使用自定义的 CoroutineTool 工具类来等待不同的时间 完结 前言 在 Unity 中,使用 yield return null 、yield return new WaitForEndOfFrame()等会导…

人物型Agent开发(文心智能体平台创作分享)

开发平台:文心智能体平台AgentBuilder | 想象即现实 目录 一、开发灵感 (一)打破刻板印象 (二)以古鉴今,探索人性与情感 二、角色分析与设定 (一)西门庆特质 (二&a…

我的深度学习笔记

传统观念认为:在不考虑算力的情况下,网络越深,其准确率就越高,最直接的方法就是把网络设计的越深越好。 事实上:随着网络的层数不断加深,当达到一定的书目之后,训练精度和测试精度都有下降&…

第十三届蓝桥杯真题Java c组C.纸张尺寸(持续更新)

博客主页:音符犹如代码系列专栏:蓝桥杯关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ 【问题描述】 在 ISO 国际标准中定义了 A0 纸张的大小为 1189mm 841mm&#…

AI运用在营销领域的经典案例及解析

大家好,我是Shelly,一个专注于输出AI工具和科技前沿内容的AI应用教练,体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具,拥抱AI时代的到来。 在前面一篇文章当中,我给大家介…

[Redis][典型运用][缓存]详细讲解

目录 0.什么是缓存?1.使用Redis作为缓存1.为什么用?2.如何用? 2.缓存的更新策略0.前言1.定期生成2.实时生成 3.缓存相关问题1.缓存预热(Cache Preheating)2.缓存穿透(Cache Penetration)3.缓存雪崩(Cache Avalanche)4.缓存击穿(Cache Breakdo…

一种多版本、多人并行开发GIT分支管理规范

首发公众号: 赵侠客 引言 作为开发者每天在写代码的同时也在写BUG,所以一方面需要开发新的需求,另一方面还要填自己以前挖的坑。目前主流程序员都在使用GIT来管理自己的代码,当GIT仓库有多人维护或者项目有多个版本同时迭代开发时…

c++进阶学习--------多态

前言 需要声明的,本节课件中的代码及解释都是在vs2022下的x86程序中,涉及的指针都是4bytes。 如果要其他平台下,部分代码需要改动。 比如:如果是x64程序,则需要考虑指针是8bytes问题等等 1. 多态的概念 1.1 概念 …

.NET内网实战:白名单文件反序列化执行命令

01阅读须知 此文所节选自小报童《.NET 内网实战攻防》专栏,主要内容有.NET在各个内网渗透阶段与Windows系统交互的方式和技巧,对内网和后渗透感兴趣的朋友们可以订阅该电子报刊,解锁更多的报刊内容。 02基本介绍 本文内容部分节选自小报童…

【易社保-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击,存在如下安全问题: 1. 暴力破解密码,造成用户信息泄露 2. 短信盗刷的安全问题,影响业务及导致用户投诉 3. 带来经济损失,尤其是后付费客户,风险巨大,造…

Java泛型方法的定义和使用、泛型类、泛型接口、泛型方法、通配符、泛型的上界与下界

文章目录 一、包装类1.1、基本数据类型和对应的包装类1.2、自动装箱和自动拆箱 二、基本介绍2.1、泛型引入背景2.1、什么是泛型2.2、为什么使用泛型 三、常见泛型字母含义四、泛型的使用4.1、泛型类4.2、泛型接口4.3、泛型方法 五、泛型的继承5.1、泛型不具备继承性5.2、何为数…

【Python】递归

专栏文章索引:Python 有问题可私聊:QQ:3375119339 文章内容改自:bilibili博主(又懂啦) 目录 一、递归函数 二、理解递归函数 一、递归函数 一个函数在其函数体内调用函数自身,这样的函数就称为递归函数。递归函数的…

每日一练 2024.9.29(2)

目录 解题思路与代码实现 题目分析 一、解题策略 关键步骤: 二、代码实现 三、代码解析 四、复杂度分析 五、运行示例 示例1: 示例2: 六、总结 解题思路与代码实现 题目分析 这道题目要求我们找到字符串列表 strs 中的相似字符组…

Arch - 架构安全性_验证(Verification)

文章目录 OverView导图1. 引言:数据验证的重要性概述2. 数据验证的基本概念3. 数据验证的层次前端验证后端验证 4. 数据验证的标准做法5. 自定义校验注解6. 校验结果的处理7. 性能考虑与副作用8. 小结 OverView 即使只限定在“软件架构设计”这个语境下&#xff0c…

物理学基础精解【40】

文章目录 矢量积矢量积(又称叉积、外积)的几何意义一、面积表示二、垂直性三、方向性四、应用实例五、数学表达 矢量积(叉积)的坐标表示法矢量积的坐标表示法的几何意义矢量积的性质矢量积的应用 矢量积(又称叉积、外积…

Linux——k8s组件

kubernetes 使用1.31.1 版本搭建集群核心组件,选择flannel 网络插件为整体集群的运行提供网络通信功能。 flannel 网络插件 kube-flannel kube-flannel-ds-9fgml 1/1 Running 1 (18m ago) 2d21h kube-flannel kube-flannel-ds-ghwbq …

<<迷雾>> 第 3 章 怎样才能让机器做加法 示例电路

全加器示意图 info::操作说明 鼠标单击开关切换开合状态 primary::在线交互操作链接 https://cc.xiaogd.net/?startCircuitLinkhttps://book.xiaogd.net/cyjsjdmw-examples/assets/circuit/cyjsjdmw-ch03-01-full-adder.txt 原图 由3个全加器组成的3比特加法机 info::操作说明…