Http 在Struts 2中处理错误页面

Http 在Struts 2中处理错误页面,http,exception,error-handling,struts2,struts,Http,Exception,Error Handling,Struts2,Struts,每当我输入URL localhost:8443/context/anyname.anyextension时,我都会得到状态404(未找到),但当我尝试类似localhost:8443/context/anyname的内容时,Struts 2似乎试图映射到一个操作,然后我会得到错误500(内部服务器错误)。我不应该总是用这两种方法获得404状态吗 我相信这是Struts 2试图将URL映射到操作的结果。当您提供“.anyextension”时,in知道它不是有效的Struts 2操作,除非您附加“

每当我输入URL localhost:8443/context/anyname.anyextension时,我都会得到状态404(未找到),但当我尝试类似localhost:8443/context/anyname的内容时,Struts 2似乎试图映射到一个操作,然后我会得到错误500(内部服务器错误)。我不应该总是用这两种方法获得404状态吗

我相信这是Struts 2试图将URL映射到操作的结果。当您提供“.anyextension”时,in知道它不是有效的Struts 2操作,除非您附加“.action”作为扩展(这是Struts 2使用的默认扩展)。它知道这不是Struts 2调用。类似地,我认为Struts 2的默认情况是缺少扩展,它尝试查找操作,但失败了,因为没有有效的操作

您可以通过将以下内容添加到struts.xml中来添加自定义扩展:

<constant name="struts.action.extension" value=",action,do" />

此外,您可以向Struts添加一些错误处理程序,以便在有效操作的情况下返回404代码,但这属于另一个问题

谢谢,
安迪

你可能用了一个

<package name="Hello" extends="action-default">

    <default-action-ref name="UnderConstruction">

    <action name="UnderConstruction">
        <result>/UnderConstruction.jsp</result>
    </action>
localhost:8443/context/SOME_INVENTED_PATH/anynameWithouthExtensions