使用Struts2遇到的Context[项目名称]启动失败问题解决(Java Web学习笔记)

embedded/2025/1/12 18:51:30/

1 引言

读的书中12.1小节的《下载和安装Struts 2 框架》时,按照书中的方法,手工创建一个Web项目,却启动失败。下面完整复原该问题产生过程。

所用环境为:

名称版本
Tomcat8.5.78
Java1.8
Struts2.3.16

在webapps下创建一个目录teststruts,其目录结构如下:

teststruts/
│
├── WEB-INF/
│   ├── lib/
│   └── web.xml
│
├── loginForm.jsp

根据书中的步骤,将struts2-core-2.3.16.3.jarxwork-core-2.3.16.3.jar两个jar包放到lib文件夹中;然后写web.xml和loginForm.jsp为如下内容:
web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"><filter><filter-name>struts2Filter</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2Filter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
</web-app>

loginForm.jsp:

<%@ page language="java" pageEncoding="UTF-8" errorPage="" %>
<!DOCTYPE html>
<html>
<head><title>登陆页面</title>
</head>
<body><form action="login" method="post"><table><caption><h3>用户登录</h3></caption><tr><td>用户名:<input type="text" name="username"/></td></tr><tr><td>&nbsp;&nbsp;码:<input type="text" name="password"/></td></tr><tr align="center"><td colspan="2"><input type="submit" value="登录"/><input type="reset" value="重填" /></td></tr></table></form>
</body>
</html>

上面项目完成,接着启动Tomcat服务器,在浏览器中输入网址http://localhost:8080/teststruts/loginForm.jsp,发现不能访问,提示说“没有公开该资源”。我感到毫无道理。查看Tomcat的启动日志,发现Context[teststruts]启动失败,如下提示:

11-Jan-2025 23:11:53.201 信息 [localhost-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory 把web 应用 程序部署到目录 [F:\Compiler_IDE\apache-tomcat-8.5.78\webapps\teststruts]
11-Jan-2025 23:11:54.616 信息 [localhost-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars 至少有一个JAR被扫描 用于TLD但尚未包含TLD。 为此记录器启用调试日志记录,以获取已扫描但未在其中找到TLD的完整JAR列表。 在扫描期间跳过不需要的JAR可以缩短启动时间和JSP编译时间。
11-Jan-2025 23:11:55.070 严重 [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal 一个或多个 筛选器启动失败。完整的详细信息将在相应的容器日志文件中找到
11-Jan-2025 23:11:55.601 严重 [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal 由于之前的 错误,Context[/teststruts]启动失败

2 问题解决

最近,迷恋上了技术。我感觉书上有我理解不清楚的地方。根据启动日志,我推测在lib包中包含的jar不完整。于是,在网上搜索"struts2 2.3.16.3.jar配合使用的jar",发现果真不完整。于是,在lib文件夹中填充完整如下:
在这里插入图片描述
然后,重启Tomcat后,访问成功,如下截图:
在这里插入图片描述

3 总结

虽然使用的Struts版本相对较老,却仍然能运行。

读相对老的书的时候,一定要亲自运行,才能有所收获。正像书中作者所说的那样:

如果你只是想“读”本书,不想动“手”实践,那么建议不要阅读本书。

对上述观点,我非常赞同!记录如上,是为笔记。


  1. 李刚. Struts 2.x 权威指南. 第3版. 北京: 电子工业出版社, 2012.10: 16-18. ↩︎


http://www.ppmy.cn/embedded/153355.html

相关文章

git问题

拉取项目代码后&#xff0c;出现 1、找回未commit的代码 2、记录不全&#xff0c;只是显示部分代码记录

PySpark广播表连接解决数据倾斜的完整案例

使用PySpark解决数据倾斜问题的完整案例&#xff0c;通过广播表连接的方式来优化性能。 准备数据 假设我们有两张表&#xff0c;一张大表 big_table 和一张小表 small_table &#xff0c;小表将作为广播表。 from pyspark.sql import SparkSession# 初始化SparkSession spar…

车载音频开发(二):对音频数据作音量调节

通过前一个章节打下的基础车载音频开发&#xff08;一&#xff09;&#xff1a;从看懂wav开始https://blog.csdn.net/Hellomino_/article/details/140873133?fromshareblogdetail&sharetypeblogdetail&sharerId140873133&sharereferPC&sharesourceHellomino_&…

webpack03

什么是source-map 将代码编译压缩之后&#xff0c;&#xff0c;可以通过source-map映射会原来的代码&#xff0c;&#xff0c;&#xff0c;在调试的时候可以准确找到原代码报错位置&#xff0c;&#xff0c;&#xff0c;进行修改 source-map有很多值&#xff1a; eval &#…

2025年第三届“华数杯”国际大学生数学建模竞赛【A题】Problem A: Can He Swim Faster

问题1&#xff1a;运动员的出色比赛表现通常得益于艰苦且持续的专业训练&#xff0c;这不仅提升了游泳技能&#xff0c;也增强了生理储备。比赛中&#xff0c;科学控制游泳速度是关键&#xff0c;包括保持个人节奏、寻求最佳身体状态节奏和合理分配体力。针对自由泳项目&#x…

【计算机网络】IPSec的安全协议和封装模式

根据上一篇文章我们讲了IPSec的基本框架&#xff0c;这一篇我们将对IPSec的协议和封装模式进行讲解。 IPSec安全协议 AH(Authentication Header)报文头验证协议&#xff0c;主要提供完整性、真实性、防重放功能&#xff1b;然而&#xff0c;AH并不加密数据报文(机密性)。IP协议…

国产3D CAD将逐步取代国外软件

在工业软件的关键领域&#xff0c;计算机辅助设计&#xff08;CAD&#xff09;软件对于制造业的重要性不言而喻。近年来&#xff0c;国产 CAD 的发展态势迅猛&#xff0c;展现出巨大的潜力与机遇&#xff0c;正逐步改变着 CAD 市场长期由国外软件主导的格局。 国产CAD发展现状 …

JS scrollIntoView 技巧揭秘:解锁网页流畅交互

文章目录 一.基本概念二.语法和参数基本语法&#xff1a;element.scrollIntoView();参数详解&#xff1a; 三.应用场景和示例场景一&#xff1a;点击目录点位到相应的位置React 示例代码&#xff1a;Vue3 示例代码&#xff1a; 场景二&#xff1a;轮播图定位到指定图片示例代码…