Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Struts 2 HTTP错误代码的全局异常映射_Java_Exception_Struts2_Error Handling_Http Error - Fatal编程技术网

Java Struts 2 HTTP错误代码的全局异常映射

Java Struts 2 HTTP错误代码的全局异常映射,java,exception,struts2,error-handling,http-error,Java,Exception,Struts2,Error Handling,Http Error,是否可以将web.xml中定义的错误页面作为Struts 2操作中的全局异常映射处理。 例如,代替 <error-page> <error-code>404</error-code> <location>/common/jsp/FilkeNotFine.jsp</location> </error-page> 404 /common/jsp/FilkeNotFine.jsp 定义如下: <glob

是否可以将
web.xml
中定义的错误页面作为Struts 2操作中的
全局异常映射处理。
例如,代替

<error-page>
    <error-code>404</error-code>
    <location>/common/jsp/FilkeNotFine.jsp</location>
</error-page>

404
/common/jsp/FilkeNotFine.jsp
定义如下:

<global-exception-mppings>
    <exception-mapping ErrorCode="404" result="internernal-error" /> 
</global-exception-mppings>

有任何插件或拦截器可以做到这一点吗?

当然可以

<global-results>
  <result name="error">/common/jsp/FilkeNotFine.jsp</result>
</global-results>

<global-exception-mappings>
  <exception-mapping exception="java.lang.Exception" result="error"/>
</global-exception-mappings>

/common/jsp/FilkeNotFine.jsp

拦截器是在包
struts default
中定义的
exception
,也是
defaultStack
的一部分,我搜索过了,据我所知,我没有办法这么做。Struts2不是抛出404的那个,它是web服务器。 Struts2将抛出异常

RomanC的回答很清楚地解释了如何处理异常,但您所期待的并不能100%实现

相反,您可以尝试以下方法:

<error-page>
    <error-code>404</error-code>
    <location>/common/jsp/my404.action</location>
</error-page>

404
/common/jsp/my404.action
然后可以将my404映射到StrutsXML中的某些操作

虽然我不确定它是否能工作,但我猜它依赖于服务器。 在这种情况下不能使用IMHO动态资源,因为服务器要求该文件实际存在

如果发生这种情况,您只需在web根目录中创建一个名为my404.action的文件,然后struts2将处理其余的部分,如果您理解我所说的内容的话


未测试,但应该可以工作。

您必须首先将struts.xml中的devMode更改为false,以便现在可以使用404页面

<constant name="struts.devMode" value="false" /> 


你确定吗?我们在哪里定义http错误代码。例如,错误404>找不到文件。400>错误请求这是由应用程序中抛出的异常处理的常见错误,您可以将代码发送到响应。然后我应该根据错误代码重定向到jsp页面中的不同页面!您不能重定向,只需发送错误并转义,web容器将为您处理它。