当前位置: 首页 > news >正文

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

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.mrgr.cn/news/83398.html

相关文章:

  • Objective-C语言的软件工程
  • Center Loss 和 ArcFace Loss 笔记
  • HTML5 加载动画(Loading Animation)
  • HTML实战课堂之简单的拜年程序
  • 【文件I/O】 总表和分表
  • 基于GAN和RL的思想来训练对话生成
  • 《CPython Internals》阅读笔记:p96-p96
  • 20、Citrix 云桌面常见VDA注册问题汇总
  • HTTP 核心概念
  • 10.STM32F407ZGT6-内部温度传感器
  • 【论文+源码】一个基于Vue.js的MOBA类游戏攻略分享平台
  • Java SpringBoot + Vue + Uniapp 集成JustAuth 最快实现多端三方登录!(QQ登录、微信登录、支付宝登录……)
  • C++中 为什么要把基类指针指向子类对象?
  • Java 应用程序CPU 100%问题排查优化实战
  • 图像模糊度(清晰度)检测 EsFFT 算法详细分析
  • Java Web开发进阶——Spring Boot与Thymeleaf模板引擎
  • 计算机的错误计算(二百零八)
  • 一分钟学会文心一言API如何接入,文心一言API接入教程
  • 1.两数之和--力扣
  • 第26章 汇编语言--- 内核态与用户态
  • 01 Oracle自学环境搭建(Windows系统)
  • 超完整Docker学习记录,Docker常用命令详解
  • 模式识别与机器学习
  • 类与对象(上)
  • Python自学 - 类进阶(可调用对象)
  • 《HeadFirst设计模式》笔记(下)