JavaWeb-Tomcat

1. Web服务器

  • web服务器由硬件和软件组成:
    • 硬件:计算机系统
    • 软件:计算机上安装的服务器软件,安装后可以为web应用提供网络服务。
  • 常见的JavaWeb服务器:
    • Tomcat(Apache):应用最广泛的web服务器。
    • Jetty:更轻量级、更灵活的servlet容器。
    • Jboss(Redhat):支持JavaEE,应用较广。
    • GlassFish(Orcale):应用不是很广。
    • Resin(Caucho)
    • Weblogic(Orcale):付费,适合大型项目。
    • Websphere(IBM):付费,适合大型项目。

在这里插入图片描述
服务器硬件为JRE提供硬件支持,JRE为Tomcat提供运行环境,Tomcat为APP提供网络服务。
JRE就像操作系统,Tomcat就像浏览器,APP就像网页。网页无法直接在操作系统上显示,必须由浏览器解析显示,浏览器也无法直接在计算机硬件上运行,必须通过操作系统与底层交互。也就是说,APP需要通过Tomcat提供的服务完成相应功能,而Tomcat需要在JRE上才能运行。

2. Tomcat

2.1 简介

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

2.2 安装

Tomcat版本、servlet版本和JavaEE版本对照关系

Servlet VersionTomcat VersionJDK Version
6.111.0.x17 and later
6.010.1.x11 and later
5.010.0.x (superseded)8 and later
4.09.0.x8 and later
3.18.5.x7 and later
3.18.0.x (superseded)7 and later
3.07.0.x (archived)6 and later (7 and later for WebSocket)
  1. 根据对照关系,选择相应的Tomcat版本,去Tomcat官网https://tomcat.apache.org/下载对应的版本。我这里下载9.0版本的解压版。页面下方还有源码可以下载。在这里插入图片描述
  2. 解压Tomcat到非中文无空格的路径。在解压之前,需要先安装好JDK,并配置好JAVA_HOME变量,如果之前安装过JDK,那么环境变量应该已经配置好了。
    在这里插入图片描述3. 点击bin/startup.bat启动服务,启动后窗口不能关闭。在这里插入图片描述
    在这里插入图片描述
  3. 打开浏览器输入http://localhost:8080访问测试,如果出现如下页面,说明打开服务成功。在这里插入图片描述
  4. 关闭服务时,可以通过关闭第三步打开的窗口,还可以启动bin/shutdown.bat来关闭服务。在这里插入图片描述
  5. 打开服务时,dos窗口出现乱码的原因是dos窗口的编码是GBK,而打印信息的编码是utf-8,所以会出现乱码,可以通过修改conf/logging.properties文件中的java.util.logging.ConsoleHandler.encoding修改为GBK即可解决问题。在这里插入图片描述
    在这里插入图片描述

2.3 Tomcat目录及测试

  • D:\apache-tomcat-9.0.83称为Tomcat的安装目录或根目录。

  • bin目录中存放的是二进制可执行文件,解压版下的bin目录中有startup.bat和shutdown.bat等文件,安装版下的内容与解压版可能不同。要使bin目录中的命令可以在命令行中使用,需要配置环境变量。在环境变量中,添加CATALINA_HOME的变量,值为Tomcat的安装路径,然后path中添加路径 %CATALINA_HOME%\bin。但是在配置好环境变量后,如果安装其他版本的Tomcat,点击该版本bin目录下的startup.bat文件,运行的也会是环境变量中绑定目录下的startup.bat文件。
    在这里插入图片描述

  • conf目录中存放的是配置信息,其下有4个非常重要的文件:

    • server.xml:配置整个服务器的信息,例如端口号。默认的HTTP请求的端口号是8080.在这里插入图片描述

    • tomcat-users.xml:存储tomcat用户的文件,保存用户名和密码,以及用户的角色信息。可以按照该文件中的注释信息添加tomcat用户,然后就可以在Tomcat主页中进入Tomcat Manager页面了。在这里插入图片描述

    • web.xml:部署描述符文件,这个文件中注册了很多MIME类型,即文档类型。这些MIME类型是客户端与服务器之间说明文档类型的,如用户请求一个HTML网页,那么服务器还会告诉客户端浏览器响应的文档是text/html类型的,这就是一个MIME类型。客户端浏览器通过这个MIME类型就知道如何处理它了。在这里插入图片描述

    • context.xml:对所有应用的统一配置,通常我们不会去配置它。在这里插入图片描述

  • lib:Tomcat的类库,里面是jar文件。这个目录中的jar文件被Tomcat中的所有项目共享。在这里插入图片描述

  • logs:这个目录是用于存放日志文件的,记录了Tomcat启动和关闭的信息,如果启动Tomcat时有错误,也会记录在日志文件中。不需要的日志文件可以删除。在这里插入图片描述

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

  • webapps:存放web项目的目录,其中每个文件夹都是一个项目。Tomcat有一些自带的项目,使用浏览器访问8080端口,访问的就是ROOT项目。在这里插入图片描述

  • work:与JSP有关。

  • LICENSE:许可证。

  • NOTICE:说明文件。

2.4 Web项目的标准结构

在这里插入图片描述

  • test_app:本应用的根目录。
    • static:非必要目录,约定俗称的名字,可以改成其他名字,用于存放静态资源如css、js和图片等。
    • WEB-INF:必要目录,并且名字不能更改,是受保护的资源目录,浏览器无法通过url直接访问该目录下的资源。在这里插入图片描述
      • classes:必要目录,用于存放字节码。如果项目中没有原码,则该目录不会出现。
      • lib:必要目录,存放此项目需要依赖的jar包。
      • web.xml:必要文件,项目的基本配置信息。较新版本中可以没有该文件。
    • index.html:访问该项目时默认的访问页面。在这里插入图片描述
    • 其他html文件:项目中的其他html页面。
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

2.5 Web项目的部署方式

  1. 将编译好的项目直接放在Tomcat的webapps目录下。
  2. 将编译好的项目打包成war包,再放在webapps目录下,tomcat启动后会自动解压war包部署项目。
  3. 将编译好的项目放在其他路径下,通过配置XML文件使得tomcat能够找到对应的项目。
    • 将项目直接放在D盘根目录下,然后在tomcat安装目录的conf\Catalina\localhost目录下新建一个与项目名相同的xml文件,并在文件中加上如下代码<Context path="自定义的项目上下文路径" docBase="项目在磁盘中的位置" />。项目上下文路径是在浏览器中需要输入的项目名称,需要与项目名称相同,如果不同则需要配置其他信息。在这里插入图片描述
      项目部署信息:在这里插入图片描述
      访问项目:在这里插入图片描述
    • 在浏览器输入的url与服务器资源的对应关系:在这里插入图片描述
    • 访问webapps下自带的项目:
      • docs项目:在这里插入图片描述
      • examples:在这里插入图片描述
      • host-manager和manager:访问这两个项目需要验证用户名和密码,可以在上面提到过的tomcat-users.xml文件中配置用户信息,加入以下代码即可:<role rolename="admin-gui" /> <role rolename="admin-script" /> <role rolename="manager-script" /> <role rolename="manager-jmx" /> <role rolename="manager-status" /> <user username="admin" password="123456" roles="admin-gui,admin-script,manager-gui,manager-script,manager-jmx,manager-status" />在这里插入图片描述
        在这里插入图片描述
      • ROOT:ROOT项目的上下文路径不为ROOT,直接访问8080端口访问的就是ROOT项目。在这里插入图片描述

2.6 IDEA中开发并部署运行Web项目

首先在IDEA中创建JavaWeb工程,然后将Java工程构建成可用于部署的app,再将app部署在tomcat上运行,这一系列操作都通过IDEA来完成。

2.6.1 IDEA关联本地Tomcat

  • 打开IDEA的设置页面,找到Build,Execution,Deployment下的Application Servers。
    在这里插入图片描述
  • 点击加号并且选择Tomcat Server。
    在这里插入图片描述
  • 选择Tomcat的安装目录。在这里插入图片描述
  • 点击apply后,IDEA与Tomcat关联成功。在这里插入图片描述

2.6.2 IDEA创建JavaWeb工程

  • 首先创建一个空项目,空项目下可以放多个module,也可以直接创建web工程。

  • 检查项目的SDK版本,语法版本,以及项目编译后的输出目录。在这里插入图片描述

  • 创建一个普通的Java项目。在这里插入图片描述

  • 为Java项目添加依赖。点击后选择Tomcat。在这里插入图片描述

  • 为Java项目添加framework support。在这里要注意版本的匹配问题,4.0版本可能不一定适用。在这里插入图片描述

  • 将index.jsp文件替换为index.html文件。在这里插入图片描述

  • 处理配置文件,在工程下建立一个resources目录,用于存放配置文件。都放在src目录下也可以,但是会很混乱。标记该目录为资源目录,否则该文件不参与编译。在这里插入图片描述

  • 在web目录的WEB-INF目录下建立lib目录,用于存放项目所需要的jar包依赖,并将lib目录添加为项目的依赖,环境级别选择module级别,降低对其他项目的影响。后续可以使用maven统一解决。在这里插入图片描述
    在这里插入图片描述

2.6.3 IDEA部署和运行web项目

  • 可以通过查看web目录有无特殊标记确定IDEA是否识别该项目为web项目,以及artifacts下,有没有对应的_war_exploded,如果没有,就点加号添加。在这里插入图片描述
    在这里插入图片描述
  • 在菜单栏的run选项下找到edit configuration,并点击加号添加本地Tomcat服务器。在这里插入图片描述
  • 然后在弹出页面的deployment选项中,通过加号添加要部署到Tomcat中的artifacts。application context就是应用上下文路径,也就是在url中需要填写的路径,这里可以和工程名不一样,也可以不写,但是要保留 ‘/’。在这里插入图片描述
  • after launch选项是指项目启动成功后,是否自动打开浏览器,并输入URL中的地址。点击apply完成设置。在这里插入图片描述
  • 运行项目。在这里插入图片描述

2.6.4 IDEA部署运行项目的原理

  • IDEA并没有将编译好的项目直接放入Tomcat的webapps目录下,而是根据关联的tomcat,创建了一个tomcat副本,然后将项目部署到了这个副本中。
  • IDEA的tomcat副本在用户文件夹下的AppData\Local\JetBrains\IntelliJIdea2023.2\tomcat中。在这里插入图片描述
  • IDEA的tomcat副本并不是一个完整的tomcat,副本里只准备了和当前项目相关的配置文件。
  • IDEA启动tomcat时,是让本地tomcat按照tomcat副本里的配置文件运行。
  • IDEA的tomcat副本中的conf\Catalina\localhost\xml文件中配置了项目的上下文路径和磁盘中的路径,所以tomcat是通过该文件获得项目的路径的。

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

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

相关文章

数据结构 | 查漏补缺之求叶子结点,分离链接法、最小生成树、DFS、BFS

求叶子结点的个数 参考博文&#xff1a; 树中的叶子结点的个数 计算方法_求树的叶子节点个数-CSDN博客 分离链接法 参考博文 数据结构和算法——哈希查找冲突处理方法&#xff08;开放地址法-线性探测、平方探测、双散列探测、再散列&#xff0c;分离链接法&#xff09;_线性…

如何选择性能测试工具?ab和其它工具的对比分析!

性能测试是保证应用程序高效可靠的重要手段之一&#xff0c;在进行性能测试时&#xff0c;选择合适的性能测试工具非常重要。应当根据测试需求来选择适合的测试工具&#xff0c;本文将会详细介绍ApacheBench&#xff08;简称ab&#xff09;和其他性能测试工具的区别以及如何选择…

Peter算法小课堂—贪心算法

课前思考&#xff1a;贪心是什么&#xff1f;贪心如何“贪”&#xff1f; 课前小视频&#xff1a;什么是贪心算法 - 知乎 (zhihu.com) 贪心 贪心是一种寻找最优解问题的常用方法。 贪心一般将求解过程分拆成若干个步骤&#xff0c;自顶向下&#xff0c;解决问题 太戈编程第…

排序:快速排序(hoare版本)

目录 快速排序&#xff1a; 概念&#xff1a; 动画分析&#xff1a; 代码实现&#xff1a; 代码分析&#xff1a; 代码特性&#xff1a; 常见问题&#xff1a; 快速排序&#xff1a; 概念&#xff1a; 快速排序是Hoare于1962年提出的一种二叉树结构的交换排序方法&a…

【项目日记(一)】高并发内存池项目介绍

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:项目日记-高并发内存池⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习C   &#x1f51d;&#x1f51d; 项目日记 1. 前言2. 什么是高并发内存池…

《opencv实用探索·十三》opencv之canny边缘检测

1、canny边缘检测应用场景 目标检测&#xff1a; Canny边缘检测可以用于检测图像中的目标边缘&#xff0c;从而帮助识别和定位物体。在目标检测的流程中&#xff0c;边缘通常是检测的第一步。 图像分割&#xff1a; Canny边缘检测可用于图像分割&#xff0c;即将图像划分为具有…

微服务--08--Seata XA模式 AT模式

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 分布式事务Seata 1.XA模式1.1.两阶段提交1.2.Seata的XA模型1.3.优缺点 AT模式2.1.Seata的AT模型2.2.流程梳理2.3.AT与XA的区别 分布式事务 > 事务–01—CAP理论…

class050 双指针技巧与相关题目【算法】

class050 双指针技巧与相关题目【算法】 算法讲解050【必备】双指针技巧与相关题目 code1 922. 按奇偶排序数组 II // 按奇偶排序数组II // 给定一个非负整数数组 nums。nums 中一半整数是奇数 &#xff0c;一半整数是偶数 // 对数组进行排序&#xff0c;以便当 nums[i] 为…

HarmonyOS开发(十):通知和提醒

1、通知概述 1.1、简介 应用可以通过通知接口发送通知消息&#xff0c;终端用户可以通过通知栏查看通知内容&#xff0c;也可以点击通知来打开应用。 通知使用的的常见场景&#xff1a; 显示接收到的短消息、即使消息...显示应用推送消息显示当前正在进行的事件&#xff0c…

MySQL数据库与其管理工具Navicat

这里介绍MySQL数据库和Navicat的使用 1.下载MySQL数据库及MySQL客户端管理工具Navicat 登录www.mysql.com下载MySQL 登录www.navicat.com.cn/download下载客户端管理工具 2.启动MySQL数据库服务器 以管理员身份打开命令提示窗口 找到mysql的bin目录 输入初始化命令mysqld…

Java毕业设计源码—vue+SpringBoot图书借阅管理图书馆管理系统

主要技术 SpringBoot、Mybatis-Plus、MySQL、Vue3、ElementPlus等 主要功能 管理员模块&#xff1a;注册、登录、书籍管理、读者管理、借阅管理、借阅状态、修改个人信息、修改密码 读者模块&#xff1a;注册、登录、查询图书信息、借阅和归还图书、查看个人借阅记录、修改…

office办公技能|ppt插件使用

PPT插件获取&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1BOmPioUKeY2TdC-1V-o3Vw 提取码&#xff1a;tdji 一、ppt插件介绍 PPT插件是一种可以帮助用户在Microsoft PowerPoint软件中添加各种额外功能和效果的应用程序。使用PPT插件可以让用户更加轻松地制作出专业、…

Linux环境下用yum安装postgres15

1. 下载PostgreSQL 15 安装包 在官网选择对应版本的安装包 https://www.postgresql.org/download/ Linux | CentOS 7 | PostgreSQL 15 2. 安装PostgreSQL 15 sudo yum install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-la…

业务场景中Hive解析Json常用案例

业务场景中Hive解析Json常用案例 json在线工具 json格式转换在线工具 https://tool.lu/json/format格式互转&#xff1a; // 格式化可以合并整行显示 {"name":"John Doe","age":35,"email":"johnexample.com"}// 格式化…

(一)rtthread主线程启动流程

&#xff08;一&#xff09;rtthread主线程启动流程 声明1.启动分析2.源码分析 声明 本文主要为个人学习笔记内容总结&#xff0c;有来自网络及其他&#xff0c;如有雷同&#xff0c;请告知。 1.启动分析 基于&#xff1a;rt-thread-v5.0.1 先执行&#xff1a;汇编代码start…

Implicit Neural Representation for Cooperative Low-light Image Enhancement

GitHub - Ysz2022/NeRCo: [ICCV 2023] Implicit Neural Representation for Cooperative Low-light Image Enhancement 参考&#xff1a;ICCV2023 | 将隐式神经表征用于“低光增强”&#xff0c;北大张健团队提出NeRCo (qq.com) 以下三个因素限制了现有低光图像增强方法的应用…

workbench导入sql脚本文件

这里面有个Data Import 点击start Import 刷新一下导入完成

C++多态(详解)

一、多态的概念 1.1、多态的概念 多态&#xff1a;多种形态&#xff0c;具体点就是去完成某个行为&#xff0c;当不同的对象去完成时会产生出不同的状态。 举个例子&#xff1a;比如买票这个行为&#xff0c;当普通人买票时&#xff0c;是全价买票&#xff1b;学生买票时&am…

故宫博物院与周大福珠宝集团 战略合作签约仪式在京举行

12月5日上午&#xff0c;故宫博物院与周大福珠宝集团战略合作签约仪式在故宫博物院故宫文化资产数字化应用研究所举行。文化和旅游部党组成员、故宫博物院院长王旭东&#xff0c;国际儒学联合会常务副会长、原文化部副部长丁伟&#xff0c;国际儒学联合会特别顾问、中国国际友好…

深入了解Java Duration类,对时间的精细操作

阅读建议 嗨&#xff0c;伙计&#xff01;刷到这篇文章咱们就是有缘人&#xff0c;在阅读这篇文章前我有一些建议&#xff1a; 本篇文章大概6000多字&#xff0c;预计阅读时间长需要5分钟。本篇文章的实战性、理论性较强&#xff0c;是一篇质量分数较高的技术干货文章&#x…