【发布时间】:2020-11-05 04:13:04
【问题描述】:
我正在尝试在 Web 应用程序中实现 Apache Shiro 1.5.3,我对 Shiro 完全陌生。我正在使用带有 Maven 的 Netbeans 11.3 作为 IDE。我还使用 Apache Tomcat 9.0.35 作为容器和本地主机。我自己为从 github 发布的 Shiro 教程创建了一个 Netbeans 项目(没有我自己的其他代码或内容):
https://shiro.apache.org/webapp-tutorial.html#project-setup 和 https://github.com/lhazlewood/apache-shiro-tutorial-webapp
当从教程的大师级别执行 web 应用程序时,它可以正常工作(此步骤不包括初始化或使用 Shiro 本身,但确认应用程序项目结构到目前为止是正确的,并且 home.jsp 和 index.js 是正确的。 jsp 都存在并将预期的“Hello World”页面呈现给浏览器。)
当我按照教程的 step-1-a 和 b 级别将发布的 web.xml 和 shiro.ini 添加到 WEB-INF 时,清理并构建项目,使用 Maven 编译一个新的 war 文件(所有这些报告BUILD SUCCESS),重新启动 Tomcat 并重新运行 Web 应用程序,我收到 404 错误:
HTTP 状态 404 – 未找到 类型状态报告 未找到消息 JSP 文件 [/shiroproject/home.jsp]
但是,home.jsp(和 index.jsp)文件显然已发布并且位于适当的位置;如果没有对 web.xml 和 shiro.ini 进行 Step-1a 和 b 更改,它们都可以正常工作。注意:我不熟悉建议的记录器 slf4j,但它包含在依赖项中,发布的 logback.xml 位于资源文件夹中,我没有更改对其中的任何引用或内容。我不认为这是当前问题的一个因素(但请继续关注...)
我最好的猜测是web.xml中指定的环境加载器监听器:
<listener>
<listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class>
</listener>
没有初始化,因此没有接收或过滤传入的 HTTP 请求。因此,找不到请求的 home.jsp 文件。此侦听器类存在于项目声明的依赖项中。除了 404 错误,我没有任何迹象表明问题可能是什么。
如果有人能提出调查原因或路径,我将不胜感激。参考更多有用的文档也会有所帮助。非常感谢。
【问题讨论】: