【Java开发指南 | 第三十五篇】Maven + Tomcat Web应用程序搭建
读者可订阅专栏:Java开发指南 |【CSDN@秋说】

文章目录
- 前言
- Maven + Tomcat Web应用程序搭建
- 1、使用Maven构建新项目
- 2、单击项目,连续按两次shift键,输入"添加",选择"添加框架支持"
- 3、选择Java Web程序
- 4、点击"编辑配置"
- 5、按照下图进行配置
- 6、添加工件
- 启动Web应用程序
- 导入包并更新Maven
前言
在文章【Java开发指南 | 第三十五篇】Tomcat安装及配置+IntelliJ Web应用程序搭建中,我们使用了 IntelliJ 进行构建:

尽管这种方式搭建便捷,但在后续引入依赖时,项目需进行额外配置,较为繁琐。
若未正确引入依赖,程序将报错:
无法解析类或软件包'commons!
无法解析类或软件包'text':1
无法解析类'StringEscapeUtils' :1
无法解析方法'getParameter(String)':18
无法解析符号'StringEscapeUtils':19
无法解析方法'println(String)':21
要解决这种问题,有两种方法:
- 手动下载并添加 JAR 文件到 WEB-INF/lib 目录中。
- 通过 Maven 引入依赖
为了程序构建后节省时间,建议采用Maven构建Web程序,
先安装配置Maven:【Java开发指南 | 第三十三篇】Maven安装配置详细教程
剩余步骤如下。
Maven + Tomcat Web应用程序搭建
1、使用Maven构建新项目

2、单击项目,连续按两次shift键,输入"添加",选择"添加框架支持"

3、选择Java Web程序

4、点击"编辑配置"

5、按照下图进行配置
-
URL所示内容表示:个人所需的端口号,启动服务时默认打开index.jsp文件
-
应用程序服务器填入tomcat的绝对路径

设置程序上下文为/

6、添加工件

启动Web应用程序
访问:
http://localhost:200/index.jsp
出现下图说明服务搭建成功:

导入包并更新Maven
例如 index.jsp 内容如下,如果不导入 commons-text 库,程序就无法运行:
<%@ page import="org.apache.commons.text.StringEscapeUtils" contentType="text/html; charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>XSS 测试</title>
</head>
<body>
<h1>在JavaScript中直接使用用户输入导致XSS</h1>
<form action="index.jsp" method="get"><label>请输入内容:</label><input type="text" name="input"><button type="submit">提交</button>
</form>
<h2>输出结果:</h2>
<p><%String userInput = request.getParameter("input");String safeInput = StringEscapeUtils.escapeHtml4(userInput); // 转义HTMLif(userInput != null){out.println("<script>var input = '" + safeInput + "';</script>");}%>
</p>
</body>
</html>
此时需要在 pom.xml 文件中添加以下依赖:
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-text</artifactId><version>1.10.0</version> <!-- 使用最新稳定版本 -->
</dependency>
注意:<dependency> 应该放在 <dependencies> 标签内,否则 Maven 无法正确解析依赖。

接着点击Maven,再重新加载所有Maven项目:

加载过程如图:

此后开启服务,在浏览器访问即可。
相关文章:
【Java开发指南 | 第三十五篇】Maven + Tomcat Web应用程序搭建
读者可订阅专栏:Java开发指南 |【CSDN秋说】 文章目录 前言Maven Tomcat Web应用程序搭建1、使用Maven构建新项目2、单击项目,连续按两次shift键,输入"添加",选择"添加框架支持"3、选择Java Web程序4、点击&…...
从0到1入门Linux
一、常用命令 ls 列出目录内容 cd切换目录mkdir创建新目录rm删除文件或目录cp复制文件或目录mv移动或重命名文件和目录cat查看文件内容grep在文件中查找指定字符串ps查看当前进程状态top查看内存kill终止进程df -h查看磁盘空间存储情况iotop -o直接查看比较高的磁盘读写程序up…...
golang 从零单排 (一) 安装环境
1.下载安装 打开网址The Go Programming Language 直接点击下载go1.24.1.windows-amd64.msi 下载完成 直接双击下一步 下一步 安装完成 环境变量自动设置不必配置 2.验证 win r 输入cmd 打开命令行 输入go version...
如何下载和使用Git:初学者指南
🌟 如何下载和使用Git:初学者指南 在当今的软件开发中,Git已经成为不可或缺的版本控制系统。无论你是独立开发者还是团队成员,掌握Git的基本操作都能帮助你更高效地管理代码。今天,我将详细介绍如何下载和使用Git&…...
SQL_语法
1 数据库 1.1 新增 create database [if not exists] 数据库名; 1.2 删除 drop database [if exists] 数据库名; 1.3 查询 (1) 查看所有数据库 show databases; (2) 查看当前数据库下的所有表 show tables; 2 数据表 2.1 新增 (1) 创建表 create table [if not exists…...
基于Python实现的智能旅游推荐系统(Django)
基于Python实现的智能旅游推荐系统(Django) 开发语言:Python 数据库:MySQL所用到的知识:Django框架工具:pycharm、Navicat 系统功能实现 总体设计 系统实现 系统首页模块 统首页页面主要包括首页,旅游资讯,景点信息…...
安孚科技携手政府产业基金、高能时代发力固态电池,开辟南孚电池发展新赛道
安孚科技出手,发力固态电池。 3月7日晚间,安孚科技(603031.SH)发布公告称,公司控股子公司南孚电池拟与南平市绿色产业投资基金有限公司(下称“南平绿色产业基金”)、高能时代(广东横…...
p5.js:模拟 n个彩色小球在一个3D大球体内部弹跳
向 豆包 提问:编写一个 p5.js 脚本,模拟 42 个彩色小球在一个3D大球体内部弹跳。每个小球都应留下一条逐渐消失的轨迹。大球体应缓慢旋转,并显示透明的轮廓线。请确保实现适当的碰撞检测,使小球保持在球体内部。 cd p5-demo copy…...
Kali WebDAV 客户端工具——Cadaver 与 Davtest
1. 工具简介 在 WebDAV 服务器管理和安全测试过程中,Cadaver 和 Davtest 是两款常用的命令行工具。 Cadaver 是一个 Unix/Linux 命令行 WebDAV 客户端,主要用于远程文件管理,支持文件上传、下载、移动、复制、删除等操作。Davtest 则是一款…...
MySQL复习笔记
MySQL复习笔记 1.MySQL 1.1什么是数据库 数据库(DB, DataBase) 概念:数据仓库,软件,安装在操作系统(window、linux、mac…)之上 作用:存储数据,管理数据 1.2 数据库分类 关系型数据库&#…...
六十天前端强化训练之第十四天之深入理解JavaScript异步编程
欢迎来到编程星辰海的博客讲解 目录 一、异步编程的本质与必要性 1.1 单线程的JavaScript运行时 1.2 阻塞与非阻塞的微观区别 1.3 异步操作的性能代价 二、事件循环机制深度解析 2.1 浏览器环境的事件循环架构 核心组件详解: 2.2 执行顺序实战分析 2.3 Nod…...
集合论--形式化语言里的汇编码
如果一阶逻辑是数学这门形式化语言里的机器码,那么集合论就是数学这门形式化语言里的汇编码。 基本思想:从集合出发构建所有其它。 构建自然数构建整数构建有理数构建实数构建有序对、笛卡尔积、关系、函数、序列等构建确定有限自动机(DFA) 全景图 常…...
2025最新群智能优化算法:山羊优化算法(Goat Optimization Algorithm, GOA)求解23个经典函数测试集,MATLAB
一、山羊优化算法 山羊优化算法(Goat Optimization Algorithm, GOA)是2025年提出的一种新型生物启发式元启发式算法,灵感来源于山羊在恶劣和资源有限环境中的适应性行为。该算法旨在通过模拟山羊的觅食策略、移动模式和躲避寄生虫的能力&…...
MySQL数据实时同步至Elasticsearch的高效方案:Java实现+源码解析,一文搞定!
引言:为什么需要实时同步? MySQL擅长事务处理,而Elasticsearch(ES)则专注于搜索与分析。将MySQL数据实时同步到ES,可以充分发挥两者的优势,例如: 构建高性能搜索服务 实时数据分析…...
Spring-事务
Spring 事务 事务的基本概念 🔹 什么是事务? 事务是一组数据库操作,它们作为一个整体,要么全部成功,要么全部回滚。 常见的事务场景: 银行转账(扣款和存款必须同时成功) 订单系统…...
Git系列之git tag和ReleaseMilestone
以下是关于 Git Tag、Release 和 Milestone 的深度融合内容,并补充了关于 Git Tag 的所有命令、详细解释和指令实例,条理清晰,结合实际使用场景和案例。 1. Git Tag 1.1 定义 • Tag 是 Git 中用于标记特定提交(commit…...
考研机试常见基本题型
1、求100以内的素数 sqrt()函数在cmath头文件中。 #include <iostream> #include <cmath> using namespace std;int main() {int count 0; // 用于统计素数的个数// 遍历 100 到 200 之间的每一个数for (int num 100; num < 200; num) {bool isPrime true…...
Android AudioFlinger(四)—— 揭开PlaybackThread面纱
前言: 继上一篇Android AudioFlinger(三)—— AndroidAudio Flinger 之设备管理我们知道PlaybackThread继承自Re’fBase, 在被第一次引用的时候就会调用onFirstRef,实现如下: void AudioFlinger::Playbac…...
C语言基础系列【20】内存管理
博主介绍:程序喵大人 35- 资深C/C/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C20高级编程》《C23高级编程》等多本书籍著译者更多原创精品文章,首发gzh,见文末👇…...
JavaScript基础-递增和递减运算符
在JavaScript编程中,递增()和递减(--)运算符是用于对数值进行加一或减一操作的基础工具。它们简洁且强大,但如果不正确地使用,可能会导致混淆或错误。本文将详细介绍这两种运算符的不同形式及其…...
Motrix WebExtension终极指南:如何让你的浏览器下载速度提升300%
Motrix WebExtension终极指南:如何让你的浏览器下载速度提升300% 【免费下载链接】motrix-webextension A browser extension for the Motrix Download Manager and its forks 项目地址: https://gitcode.com/gh_mirrors/mo/motrix-webextension 你是否厌倦了…...
Python实战:利用pymodbus构建工业数据采集与监控系统
1. 工业数据采集为什么需要Modbus? 在工厂车间里,你可能见过各种钢铁巨兽般的设备——数控机床、PLC控制器、温度传感器。这些设备每天都在产生海量数据,但如何让这些"哑巴设备"开口说话?Modbus协议就是它们的通用语言。…...
终极指南:如何用免费AI转PSD工具实现矢量图层无损转换?
终极指南:如何用免费AI转PSD工具实现矢量图层无损转换? 【免费下载链接】ai-to-psd A script for prepare export of vector objects from Adobe Illustrator to Photoshop 项目地址: https://gitcode.com/gh_mirrors/ai/ai-to-psd 你是否在Adobe…...
从STM32转战华大HC32F4A0:手把手教你搞定TIM6的PWM输入捕获(附中断配置避坑点)
从STM32到HC32F4A0的PWM输入捕获实战:TIM6配置与中断避坑指南 对于习惯了STM32生态的嵌入式开发者来说,初次接触华大半导体的HC32F4A0系列MCU时,往往会遇到一些意料之外的挑战。PWM输入捕获作为电机控制、频率测量等应用中的核心功能…...
Loop:Mac免费窗口管理神器,彻底告别桌面混乱的终极解决方案
Loop:Mac免费窗口管理神器,彻底告别桌面混乱的终极解决方案 【免费下载链接】Loop Window management made elegant. 项目地址: https://gitcode.com/GitHub_Trending/lo/Loop 你是否曾因Mac桌面上堆满的窗口而感到困扰?当多个应用程序…...
如何在matlab中调用taotoken聚合大模型api的详细教程
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 如何在 MATLAB 中调用 Taotoken 聚合大模型 API 的详细教程 对于使用 MATLAB 进行科学计算、数据分析或工程开发的用户而言&#x…...
本地AI智能体框架NagaAgent:基于开源大模型的规划与工具调用实践
1. 项目概述:一个被低估的本地AI智能体框架最近在折腾本地大模型应用,特别是想搞点能自己跑起来的智能体(Agent),发现了一个挺有意思但讨论度不高的项目——RTGS2017/NagaAgent。乍一看这个标题,可能会觉得…...
从零构建现代Web音乐应用:技术选型、音频引擎与全栈实践
1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目,叫chemistwang/music-app。光看名字,你可能会觉得这又是一个“音乐播放器”,市面上类似的轮子已经多如牛毛了。但作为一个在前后端领域摸爬滚打多年的开发者,我习惯性…...
Windows 平台 OpenClaw 2.7.1 可视化安装避坑技巧与高效配置方法
OpenClaw 2.7.1 Windows 一键部署教程|3 分钟快速搭建本地 AI 智能助手OpenClaw(小龙虾)是一款实用性极强的本地 AI 智能体工具,适配全系 Windows 系统。软件依托自然语言交互逻辑,可智能完成电脑操控、文件分类管理、…...
ARM内存访问指令LDRB与LDREX详解及应用
1. ARM内存访问指令概述在嵌入式系统开发中,对内存的高效访问是保证程序性能的关键。ARM架构提供了丰富的内存访问指令集,其中LDRB和LDREX是两种具有代表性的指令。LDRB(Load Register Byte)用于从内存加载字节数据,而…...
