【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项目:

加载过程如图:

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

相关推荐
2351626 分钟前
【JVM】Java为啥能跨平台?JDK/JRE/JVM的关系?
java·开发语言·jvm·spring boot·后端·spring·职场和发展
courtfu37 分钟前
Plugin ‘mysql_native_password‘ is not loaded`
java·后端
枫子有风40 分钟前
Go语言流程控制
android·java·golang
小裕哥略帅1 小时前
订单管理--实时算出在途数量、收货数量、到货数量、已发货数量和未发货数量
java·开发语言
Dxxyyyy2 小时前
零基础学JAVA--Day27(注释+异常+异常处理方法)
java·开发语言
Craaaayon2 小时前
如何选择两种缓存更新策略(写缓存+异步写库;写数据库+异步更新缓存)
java·数据库·redis·后端·缓存·mybatis
AAA卷不动了2 小时前
JVM(二)------ 类加载、初始化与单例模式的联系
java·jvm·单例模式
一 乐2 小时前
点餐|智能点餐系统|基于java+ Springboot的动端的点餐系统小程序(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·小程序·论文
少许极端3 小时前
算法奇妙屋(十)-队列+宽搜(BFS)
java·数据结构·算法·bfs·宽度优先·队列
程序员卷卷狗3 小时前
JVM 内存结构与 GC 调优全景图
java·开发语言·jvm