下午好,
我意识到这个问题已被多次问过,但这些问题主要是由于将struts.xml
文件放在不正确的位置或拼写错误的路径名或其他内容的人造成的。
我已尽我所能遵循 Struts 2 网站上的教程,但不断收到以下错误:
HTTP Status 404 - There is no Action mapped for namespace [/] and action name [hello] associated with context path [/basic_struts].
- 我使用 Maven 作为我选择的构建工具
- 我的
struts.xml
文件位于文件夹的根目录中,WebContent
不在文件夹中WEB-INF\classes
。
以下是我的struts.xml
文件的结构:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<!-- This minimal Struts 2 configuration file tells the framework that
if the URL ends in index.action to redirect the browser to index.jsp. -->
<action name="index">
<result>/index.jsp</result>
</action>
<action name="hello"
class="com.me.actions.HelloWorldAction" method="execute">
<result name="success">jsp/HelloWorld.jsp</result>
</action>
</package>
我还将HelloWorld.jsp
文件放在一个名为的文件夹jsp
中,并在 struts 文件中指出了这一点。假设调用上述操作的索引文件代码如下所示:
<p>
<a href="<s:url action='hello'/>">Hello World</a>
</p>
问题
1)我放置struts.xml
文件是否正确?(注意 - 我web.xml
的文件在WEB-INF
文件夹内)如果不是应该放在哪里?
(注意 - 我读到它应该放在src/main/resources
文件夹中,但那在哪里?我原以为这是 java 资源的一部分,但为什么要把它放在那里?)
2)您是否需要在 lib 文件夹或构建路径中包含任何 jar 才能使其正常工作?从网站上,您所要做的就是在 Maven pom 文件中包含一个依赖项 - 在我的文件中,这看起来像这样:
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.16</version>
</dependency>
谢谢
更新
感谢 Roman C 的帮助。我的 struts 文件在错误的位置。如果其他人有这个问题,我建议查看这个问题,该问题有一个很好的屏幕截图,说明了 struts 文件的位置 - 请记住将其命名为 struts.xml(小写)而不是大写。