【Java Web】Tomcat 快速入门

通常,为了让 Java 开发的应用程序(app)能够在服务器上正常运行,必须安装 Java 运行时环境(JRE)。JRE 主要支持 Java SE,而如果要运行 Java EE 应用,则需要更多的支持,比如依赖于服务器软件,Tomcat 就是其中一种常用的服务器。

有了 Tomcat 之后,由于它本身也是用 Java 实现的,因此同样需要 JRE 来运行。之前看 Java Web 教程,觉得有一个比喻可以帮助理解应用程序、Tomcat 以及 JRE 三者的关系:将 Java 开发的应用程序比作子弹,而 Tomcat 则是枪。子弹需要符合枪的规范,并装入枪中才能发射。然而,仅有枪并不意味着可以随时使用,还需要在靶场上才能操作,而 JRE 就可以理解为这个靶场。

Tomcat 是 Apache 软件基金会的 Jakarta 项目中的一个核心项目,由 Apache、sun 和其他一些公司及个人共同开发而成。最新的 Serviet 和 JSP 规范总是能在 Tomcat 中得到体现。Tomcat 是目前比较流行的 web 应用服务器。

Tomcat 安装

在 Tomcat 官网左侧 Download 模块选择对应版本的 Tomcat 进行下载。这里选择 64-bit Windows 版本的压缩包进行下载,下载完成后,选择一个合适的文件夹进行解压,即可使用:

在这里插入图片描述

需要注意的是,在 Tomcat 的 10 以及之后的版本中,由于包名由原先的 javax.* 改成 jakarta.*,因此,原先可以运行在之前版本的应用程序,需要修改包名才能运行在 10 版本以及之后的 Tomcat 上。另外,下载 Tomcat 时需要确认支持的 Java 版本:

在这里插入图片描述

Tomcat 服务启动:进入 apache-tomcat 目录下的 bin 文件夹,找到 startup 命令。如果是在 Windows 操作系统,则选择运行 startup.bat,如果是在 Linux 系统,则选择运行 startup.sh。这里以 Windows 系统为例,双击startup.bat,出现一个控制台窗口,里面打印着启动的日志,这时可以打开浏览器输入:http://localhost:8080/,当出现以下页面时,说明启动成功:

在这里插入图片描述

Tomcat 服务关闭:可以直接关闭启动时出现的控制台窗口,也可以运行 shutdown 命令,比如在 Windows 系统中,双击 bin 目录中的 shutdown.bat 即可关闭 Tomcat 服务。

解决Tomcat 打印日志中文乱码:在 conf 目录下找到 logging.properties 文件,打开后找到控制台的字符集设置,将 UTF-8 改成 GBK,之后,重新启动 Tomcat 服务即可:

java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = org.apache.juli.OneLineFormatter
java.util.logging.ConsoleHandler.encoding = GBK
# java.util.logging.ConsoleHandler.encoding = UTF-8

Tomcat 常见目录

(1)bin 目录

该目录用于存放 Tomcat 相关命令,比如 startup、shutdown 等命令。

(2)conf 目录

该目录用于存放配置文件,比如:1)配置 Tomcat 服务占用的端口号,可以修改 conf 下的 server.xml 配置文件内容;2)设置 Tomcat 启动控制台字符集,防止日志乱码,可以修改 logging.properities 中控制台处的字符集设置。

(3)lib 目录

该目录用于存放 Tomcat 程序的相关 jar 包。可以将部署在 Tomcat 上项目所需的 jar 包存放在 lib 文件夹中,但不建议这样做,会污染环境。

(4)logs 目录

该目录用于存放 Tomcat 启动后记录的日志。Tomcat 使用久会产生较多日志,建议定期清理不必要的日志信息,避免堆积。

(5)temp 目录

该目录用于存放临时文件,不是很重要,无需多关注

(6)webapps 目录

该目录用于存放需要部署的项目,webapps 文件夹中本身自带了一些项目,这些项目可以删除。

(7)work 目录

该目录用于存放与 jsp 技术相关的文件。由于目前 jsp 技术过时了,因此,这个 work 目录可以不关注。

WEB 项目标准结构

在使用 Tomcat 的过程中,一个标准的可以用于发布的 WEB 项目标准结构如下:

在这里插入图片描述

  • static:非必要目录,约定俗成的名字,一般在此处放静态资源(css js img)

  • WEB-INF:必要目录,必须叫 WEB-INF,受保护的资源目录,浏览器通过 url 不可以直接访问的目,存放项目相关的重要文件:

    • classes:项目字节码根路径
    • lib:存放项目所需的第三方 jar 包
    • web.xml:当前项目的配置文件

url 的组成部分和项目中资源的对应关系如下:

在这里插入图片描述

Tomcat 部署项目

使用 Tomcat 部署项目,有三种方式:

  • 直接将编译好的项目放在 webapps 目录下

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

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

对于第三种部署方式,首先在磁盘的自定义目录准备一个部署项目,这里以名称为 app 的项目为例。之后,在 Tomcat 的 conf 文件夹下创建 Catalina/localhost 目录,并在该目录下创建一个 app.xml 文件(该文件与项目名同名),文件内容为:

<!--
    path:项目的访问路径,也是项目的上下文路径,即浏览器中输入的项目名称
    docBase:项目在磁盘中的实际路径
-->

<Context path="/app" docBase="D:\webapps\app">

其中,path 参数表示是项目的访问路径,也是项目的上下文路径,即浏览器中输入的项目名称;docBase 参数表示项目在磁盘中的实际路径。注意: path 、xml 文件名称以及项目名称尽量保持一致,否则需要额外的配置。之后,即可启动 Tomcat 访问项目。

IDEA 关联 Tomcat

在部署 JavaWeb 工程时,首先需要将该工程构建成可以用于 Tomcat 服务器部署的应用程序,之后才能将这个应用程序真正部署到 Tomcat 服务器上。这个过程可以使用 IDEA 进行。

(1)建立 Tomcat 和 IDEA 关联

打开 IDEA 应用,在 Settings 中找到 Build, Execution, Deployment 模块,找到 Application Servers 选项,添加一个 Tomcat Server:

在这里插入图片描述

注意:Tomcat Home 地址选到 Tomcat bin 目录的上一层,之后点击 OK 即可。

(2)使用 IDEA 创建和开发 JavaWeb 工程

在自定义路径下创建一个项目文件夹,这里以 web-all 命名项目文件夹,并用 IDEA 打开这个空项目。在创建 JavaWeb 工程之前,首先点击导航栏处的 File 的 Project Structure 选项,设置 JDK 和Java 的版本,同时设置构建好的应用程序的输出路径:

在这里插入图片描述

注意,这里是为了便于将多个开发项目放在同一个文件夹中管理,才先创建一个 web-all 项目。所以,接着是通过new Module 创建具体需要开发的项目。右键项目,选择 new 新的 Module(这里演示的项目 Build systems 选择 IntelliJ):

在这里插入图片描述

之后需要将这个普通项目转成一个 Java Web 项目。不过,在此之前,需要为项目添加 Tomcat 运行依赖和 Web 组件。点击导航栏处的 File 的 Project Structure 选项,选择当前 Modules 的 Dependencies,添加 Tomcat 依赖。点击 + 选择 Library... 中对应版本的 Tomcat 依赖:

在这里插入图片描述

接着,添加 Web 资源组件。右键项目,选择 Add Framework Support...,勾选 Web Application,选择 5.0 版本(4.0 版本无法在 Tomcat 10 中运行):

在这里插入图片描述

此时,可以看到项目目录下多了一个 web 文件夹,说明目前这个项目已经不再是普通项目,而是一个 Java Web 项目。根据常见的开发项目目录结构,为这个项目创建一些测试代码:

在这里插入图片描述

(3)将工程构建成可部署的应用程序

在开发好当前工程后,需要将当前工程转成一个应用程序。点击 IDEA 导航栏中的 Build 下面的 Build Artifacts,选择当前工程点击 Build。完成后会生成一个 out 文件夹,该文件夹的 artifacts 中有一个 工程名称_war_exploded 的应用程序,这个应用程序即为转化后的输出。当然这一步其实可以省略,直接进行下面的 Tomcat 配置,最终在运行项目时,会自动转换和生成。接着进行 Tomcat 项目部署配置。点击编辑 Run/Debug Configurations:

在这里插入图片描述

添加一个 Tomcat Server Local:

在这里插入图片描述

选择当前版本的 Tomcat 作为 Application Server,点击 Deployment,将当前转换好的应用程序添加进去,这里可以将 Application context 设置成一个较短的名称,这样使用浏览器访问项目的路径会简洁一些:

在这里插入图片描述

(4)将应用程序部署到 Tomcat 并启动运行

配置完成后,点击 IDEA 中的运行项目按钮即可启动 Tomcat 并在 Tomcat 上运行项目。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

域渗透入门靶机之HTB-Cicada

easy难度的windows靶机 信息收集 端口探测 nmap -sT --min-rate 10000 -p- 10.10.11.35 -oA ./port 发现开放了53&#xff0c;88&#xff0c;389等端口&#xff0c;推测为域控 进一步信息收集&#xff0c;对爆破的端口进行更加详细的扫描 小tips&#xff1a;对于众多的端口&…

QT核心功能概览

QT的学习&#xff08;一&#xff09;如何查阅QT文档&#xff1f;&#xff08;以QPushButton为例&#xff09;_qt的组件在qt文档那里面看-CSDN博客 QPushButton Class | Qt Widgets 5.15.18 一、前言 QT虽说功能很庞大&#xff0c;但是常用的控件也不是很多&#xff0c;也就只…

《Java核心技术I》并行数组算法

并行数组算法 Arrays类提供了大量并行化操作。 Arrays.parallelSort方法可以对一个基本类型值或对象的数组排序。 package arrays;import java.io.IOException; import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.Path; import …

深度学习:重塑学校教育的未来

摘要&#xff1a;本文旨在全面剖析深度学习技术在教育领域的应用现状及未来前景。通过对当前深度学习技术在教育中的应用案例进行深入剖析&#xff0c;探讨其在教学效果、学习体验等方面的积极作用&#xff0c;同时分析存在的挑战与问题。在此基础上&#xff0c;本文将进一步展…

从根上理解 mysql -数据在页中是怎么存储的

之前说了&#xff0c;一行数据是怎么存储的。现在来看下 数据在页中是怎么存储的 基础知识 页是Innodb管理的存储空间的基本单位,一般是16kb页分为好多类型 大概十多种&#xff0c;面试中平时所说的页即为索引页&#xff08;数据页&#xff09;&#xff0c;当然也有像insert …

在C#中编程绘制和移动线段

这个示例允许用户绘制和移动线段。它允许您根据鼠标下方的内容执行三种不同的操作。 当鼠标位于某个线段上时&#xff0c;光标会变成手的形状。然后您可以单击并拖动来移动该线段。当鼠标位于线段的终点上时&#xff0c;光标会变成箭头。然后您可以单击并拖动以移动终点。当鼠…

快速学习selenium基础操作

全篇大概19000字&#xff08;含代码&#xff09;&#xff0c;建议阅读时间1h 什么是Selenium&#xff1f; Selenium是一系列自动化工具集的统称&#xff0c;官方工具有 Selenium IDE、Selenium WebDriver、Selenium Grid&#xff0c; 主要用于桌面端Web应用程序的自动化。能够通…

说下JVM中一次完整的GC流程?

大家好&#xff0c;我是锋哥。今天分享关于【说下JVM中一次完整的GC流程&#xff1f;】面试题。希望对大家有帮助&#xff1b; 说下JVM中一次完整的GC流程&#xff1f; 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在JVM中&#xff0c;垃圾回收&#xff08;GC&am…

Vue.createApp的对象参数

目录 template 属性 data 属性 methods 属性 疑问 function 函数的两种写法 methods 属性中 this 的指向 总结 Vue 实例是通过 Vue.createApp() 创建的&#xff0c;该函数需要接收一个对象作为参数&#xff0c;该对象可添加 template、data、methods 等属性。 template …

前端H5移动端基础框架模板 :Vue3 + Vite5 + Pinia + Vant4 + Sass + 附源码

技术栈选用 Vue3 Vite5 Pinia Vant4 Sass 源码地址&#xff1a; git clone https://gitee.com/gaiya001/h5-APP.git1. 1.vite.config.js文件配置 ** import { defineConfig } from vite // 导入 Vite 的配置函数 import vue from vitejs/plugin-vue // 导入 Vue 插件 i…

LabVIEW动态加载语言与VI调用 附件有程序

此LabVIEW设计通过动态加载语言资源和调用VI来实现多语言支持和模块化功能。它适用于需要灵活语言切换和动态VI管理的场景&#xff0c;但在开发和维护中有一些需要优化的地方。以下是详细的分析和改进建议。 优点&#xff1a; 灵活的语言切换&#xff1a; 用户可通过加载不同语…

分布式搜索引擎之elasticsearch基本使用2

分布式搜索引擎之elasticsearch基本使用2 在分布式搜索引擎之elasticsearch基本使用1中&#xff0c;我们已经导入了大量数据到elasticsearch中&#xff0c;实现了elasticsearch的数据存储功能。但elasticsearch最擅长的还是搜索和数据分析。 所以j接下来&#xff0c;我们研究下…

使用webrtc-streamer查看实时监控

摄像头配置&#xff08;海康摄像头为例&#xff09; 摄像头视频编码应改成H264格式 webrtc-streamer下载 webrtc-streamer下载地址 下载后解压出来双击运行&#xff0c;端口默认8000 VUE2项目引入文件 在项目静态文件“public”中需引入两个js文件“webrtcstreamer.js”与“…

鸿蒙调试打包(非正式打包)

文章目录 前言第一步&#xff1a;生成.p12和.csr文件第二步&#xff1a;申请证书的前置步骤第三步&#xff1a;申请证书 前言 HarmonyOS 应用打包后的文件为.app 格式&#xff0c; android 打包后的文件为.apk&#xff0c;IOS 打包后的文件为.apa HarmonyOS通过数字证书&#…

如何利用DBeaver配置连接MongoDB和人大金仓数据库

最近根据国产化要求&#xff0c;需要使用国产数据库&#xff0c;但习惯使用DBeaver连接各种成熟的商业或开源数据库。因此&#xff0c;就想着如何继续基于该工具&#xff0c;连接MongoDB和人大金仓数据库&#xff0c;查了半天很多地方说法不统一&#xff0c;所以自己就简单整理…

手机租赁系统开发指南一站式服务流程解析

内容概要 手机租赁系统的开发是一个复杂但有趣的过程&#xff0c;像搭建乐高一样&#xff0c;只要找到合适的模块&#xff0c;就能打造出一个宾至如归的租赁平台。在这部分&#xff0c;我们将对开发流程的整体结构进行简要概述&#xff0c;并指出每个环节的重要性。 首先&…

Linux中vi和vim的区别详解

文章目录 Linux中vi和vim的区别详解一、引言二、vi和vim的起源与发展三、功能和特性1、语法高亮2、显示行号3、编辑模式4、可视化界面5、功能扩展6、插件支持 四、使用示例1、启动编辑器2、基本操作 五、总结 Linux中vi和vim的区别详解 一、引言 在Linux系统中&#xff0c;vi和…

信息安全管理——应急响应、灾备与恢复

安全管理 信息安全管理 信息安全管理是指通过维护信息的机密性、完整性和可用性来管理和保护信息资产&#xff0c;是对信息安全保障进行指导、规范和管理的一系列活 动和过程。 信息安全管理的意义在于他是组织或者公司管理体系的一个重要环节 &#xff0c;比如说一所大学就是…

数据库数据恢复—ORACLE常见故障有哪些?如何恢复数据?

Oracle数据库常见故障表现&#xff1a; 1、ORACLE数据库无法启动或无法正常工作。 2、ORACLE ASM存储破坏。 3、ORACLE数据文件丢失。 4、ORACLE数据文件部分损坏。 5、ORACLE DUMP文件损坏。 Oracle数据库数据恢复方案&#xff1a; 1、检测存放数据库的服务器/存储设备是否存…

使用 WebStorm 导入已有的 Vue 项目并运行的步骤与注意事项

目录 1. 引言2. WebStorm 环境准备 2.1 安装 WebStorm2.2 配置 Node.js 和 npm2.3 使用 nvm 管理 Node.js 和 npm 版本2.4 npm 版本与 Vue 版本对应关系 3. 导入已有的 Vue 项目 3.1 打开 Vue 项目3.2 安装项目依赖3.3 使用 nvm 控制 Node.js 和 npm 版本 4. 运行 Vue 项目 4.…