Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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
Servlets 弹簧&x2B;平铺-在不更改URL的情况下显示错误页面?_Servlets_Spring Mvc_Http Status Code 404 - Fatal编程技术网

Servlets 弹簧&x2B;平铺-在不更改URL的情况下显示错误页面?

Servlets 弹簧&x2B;平铺-在不更改URL的情况下显示错误页面?,servlets,spring-mvc,http-status-code-404,Servlets,Spring Mvc,Http Status Code 404,在不更改浏览器中的URL的情况下,如何向用户显示一般错误页面(如404) 因此,例如,如果用户转到一个页面/happy/fun/times,但我的web应用程序中不存在这样的tiles视图/映射,我希望URL保持为/happy/fun/times,但向他们显示/error/404的tiles视图 另外,在一个相关的注释中,对于所有错误,例如500个错误或403个错误,我将如何处理这些错误?甚至是可能以某种方式通过的例外情况 我已尝试使用web.xml执行以下操作: <error-page&

在不更改浏览器中的URL的情况下,如何向用户显示一般错误页面(如404)

因此,例如,如果用户转到一个页面
/happy/fun/times
,但我的web应用程序中不存在这样的tiles视图/映射,我希望URL保持为
/happy/fun/times
,但向他们显示
/error/404
的tiles视图

另外,在一个相关的注释中,对于所有错误,例如500个错误或403个错误,我将如何处理这些错误?甚至是可能以某种方式通过的例外情况

我已尝试使用web.xml执行以下操作:

<error-page>
    <error-code>500</error-code>
    <location>/error/500</location>
</error-page>
<error-page>
    <error-code>404</error-code>
    <location>/error/404</location>
</error-page>
<error-page>
    <error-code>403</error-code>
    <location>/error/403</location>
</error-page>
<error-page> 
    <exception-type>java.lang.Throwable</exception-type> 
    <location>/error/general</location> 
</error-page>

500
/误差/500
404
/错误/404
403
/错误/403
java.lang.Throwable
/错误/一般

然而,这似乎不起作用。如果需要,我可以将位置更改为“/WEB-INF/jsp/error/404.jsp”,然后WEB.xml将捕获404个错误。但是,它只显示“404.jsp”文件的内容,而不是我实际想要显示的tiles视图“/error/404”。

您可以按类型处理异常

<error-page>
    <exception-type>java.lang.Exception</exception-type>
    <location>/WEB-INF/jsp/error/uncaughtException.jsp</location>
</error-page>

java.lang.Exception
/WEB-INF/jsp/error/uncaughtException.jsp
或通过HTTP错误代码处理此错误

<error-page>
    <error-code>404</error-code>
    <location>/WEB-INF/jsp/error/404.jsp</location>
</error-page>

404
/WEB-INF/jsp/error/404.jsp
如果您想要一个spring控制器或spring视图来解决异常,那么您需要声明一个SimpleMappingExceptionResolver类型的Springbean

<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver" p:defaultErrorView="uncaughtException">
    <property name="exceptionMappings">
        <props>
            <prop key=".DataAccessException">dataAccessFailure</prop>
            <prop key=".NoSuchRequestHandlingMethodException">resourceNotFound</prop>
            <prop key=".TypeMismatchException">resourceNotFound</prop>
            <prop key=".MissingServletRequestParameterException">resourceNotFound</prop>
        </props>
    </property>
</bean> 

数据访问失败
未找到资源
未找到资源
未找到资源

在JSP页面中,您可以通过${exception}访问异常实例。

我是如何使用以下代码完成此操作的:

/WEB-INF/jsp/error/404.jsp:

<%@taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles" %>

<!-- insert the view -->
<tiles:insertDefinition name="baseLayout" > 
    <tiles:putAttribute name="body" value="<p> Error 404!! </p>" />
</tiles:insertDefinition>

web.xml:

<error-page>
    <error-code>500</error-code>
    <location>/WEB-INF/jsp/error/500.jsp</location>
</error-page>
<error-page>
    <error-code>404</error-code>
    <location>/WEB-INF/jsp/error/404.jsp</location>
</error-page>
<error-page>
    <error-code>403</error-code>
    <location>/WEB-INF/jsp/error/403.jsp</location>
</error-page>

500
/WEB-INF/jsp/error/500.jsp
404
/WEB-INF/jsp/error/404.jsp
403
/WEB-INF/jsp/error/403.jsp

我不做Spring MVC,但不只是在
web.xml
中将它们指定为
,通常的方法对您有效?好的,这可以显示错误,但是如果我想使用tiles视图而不是jsp文件,这可能吗?我一直在尝试使用“/error/404”而不是“/WEB-INF/jsp/error/404.jsp”,因为我想让平铺控制用户看到的内容(这样他们就可以看到导航和类似的内容)。这是可能的,还是我必须在404.jsp中手动包含导航和其他内容?