HTTP Status 404

1、原来设置的包声明:

<package name="myPackage" extends="struts-default">
    <!-- 定义action -->
    <action name="first">
        <!-- 定义处理成功的映射页面 -->
        <result>/first.jsp</result>
    </action>
    
    <action name="greeting" class="com.ouyang.action.GreetingAction">
        <result>/first.jsp</result>
    </action>
</package>

添加 namespace="/"就好

2、添加后的包

<package name="myPackage" extends="struts-default" namespace="/">
    <!-- 定义action -->
    <action name="first">
        <!-- 定义处理成功的映射页面 -->
        <result>/first.jsp</result>
    </action>
    
    <action name="greeting" class="com.ouyang.action.GreetingAction">
        <result>/first.jsp</result>
    </action>
</package>

在struts1中是没有命名空间这个概念的,通过命名空间我们可以将所有的action配置划分为一个个逻辑单元,每个单元都有它自己的标识前缀。命名控件可以避免action命名的冲突。每个命名空间下有可以有一个叫做”help”的action,并且有着各自不同的实现,当然在同一个命名空间下最好是不要出现两个名字一样的action。当命名空间的前缀出现在浏览器的URI中时,标签会意识到命名空间,因此我们不必将命名空间嵌套在表单和链接中。

默认的命名空间是空字符串””,也就是不设置namespace属性时候的命名空间。我们在匹配一个action的时候,先到它指定的命名空间中去找,如果没有再到这个默认的命名空间中去找。Struts2还支持根命名空间(“/”),当一个request直接请求context path下面的资源时,struts2会首先到跟命名空间下去寻找匹配的action,例如请求是http://server/myapp/bar.action,那么我们首先会去”/”命名空间下去寻找这个action.

原文地址:https://www.cnblogs.com/ouyxy/p/6773587.html