【Java开发指南 | 第三十五篇】Maven + Tomcat Web应用程序搭建

读者可订阅专栏:Java开发指南 |【CSDN@秋说】

文章目录

前言

在文章【Java开发指南 | 第三十五篇】Tomcat安装及配置+IntelliJ Web应用程序搭建中,我们使用了 IntelliJ 进行构建:

尽管这种方式搭建便捷,但在后续引入依赖时,项目需进行额外配置,较为繁琐。

若未正确引入依赖,程序将报错:

java 复制代码
无法解析类或软件包'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应用程序

访问:

java 复制代码
http://localhost:200/index.jsp

出现下图说明服务搭建成功:

导入包并更新Maven

例如 index.jsp 内容如下,如果不导入 commons-text 库,程序就无法运行:

java 复制代码
<%@ 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);  // 转义HTML
    if(userInput != null){
      out.println("<script>var input = '" + safeInput + "';</script>");
    }
  %>
</p>
</body>
</html>

此时需要在 pom.xml 文件中添加以下依赖:

java 复制代码
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-text</artifactId>
    <version>1.10.0</version> <!-- 使用最新稳定版本 -->
</dependency>

注意:<dependency> 应该放在 <dependencies> 标签内,否则 Maven 无法正确解析依赖。

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

加载过程如图:

此后开启服务,在浏览器访问即可。

相关推荐
无所谓^_^6 分钟前
个人健康管理系统 | Springboot3 | Vue3
java·vue·毕业设计·springboot·课程设计·毕设·前后端分离
杨凯凡13 分钟前
Spring Boot 的 @Transactional 为什么会失效?从代理、自调用到异常回滚的排查实战
java·spring boot·spring·事务·后端开发
曼岛_28 分钟前
[图解密码学]第5章 对称加密基础
java·数据库·密码学
梅孔立2 小时前
Docker 容器网络不通:Tomcat 无法解析 MySQL、Nginx 无法反代 Tomcat 的生产级排查与治理
网络·docker·tomcat
天河归来11 小时前
第三方接口不稳定,如何让核心任务继续完成
java·大数据
Knight_AL11 小时前
Java 文件下载时文件名中的 `#` 被转换成 `%23`?一次 URL 编码与解码问题排查
java·开发语言
砚底藏山河12 小时前
python量化自定义周期 K 线合成
java·开发语言·数据库·python·金融
猿究院_夏燊13 小时前
MySQL 的四种隔离级别
java·数据库·mysql
码流子13 小时前
移动收费怎么做?手持终端+App+收费中心的架构实践
java·开发语言·架构
霸道流氓气质14 小时前
AI 流式对话与实时聊天平台:SSE 解码竞态、有状态会话隔离与背压取消的 Vue3 + Spring AI 生产级实战
java·人工智能·spring