当前位置: 首页 > 知识库问答 >
问题:

如何处理HTTP状态404错误在Spring MVC中使用@控件建议

法风畔
2023-03-14

我在我的Web应用程序中使用Spring MVC。我一直在尝试各种选项来返回应用程序中引发的各种异常的自定义错误页面。我已经使用@Controlller建议注释做到了这一点。我的全局异常处理程序类如下:

import org.apache.velocity.exception.ResourceNotFoundException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.ResponseStatus;

@ControllerAdvice
public class ExceptionControllerAdvice
{

    private static final Logger logger  = LoggerFactory.getLogger(ExceptionControllerAdvice.class);

    @ExceptionHandler(Exception.class)
    public String exception(Exception e) 
    {
        logger.error(e.toString());
        return "exceptionPage";
    }

    @ExceptionHandler(ResourceNotFoundException.class)
    @ResponseBody
    @ResponseStatus(HttpStatus.NOT_FOUND)
    public String handleMissingParameter() 
    {
        return "exceptionPage";
    }
}

但我面临的问题是HTTP 404错误。是否有任何方法可以使用此注释处理HTTP状态错误。我还使用Apache tiles,我使用tiles和ftl页面呈现页面。

共有1个答案

拓拔欣嘉
2023-03-14

有同样的问题,似乎无法得到答案的任何地方,然后我发现这个博客http://nixmash.com/java/custom-404-exception-handling-in-spring-mvc/

将以下代码添加到您的控制器:

@RequestMapping(value ={ "{path:(?!resources|static).*$}","{path:(?!resources|static)*$}/**" }, headers = "Accept=text/html")

public void unknown() throws Exception{
    throw new Exception();
}
}

任何包含“资源”或“静态”的路径都不会返回错误页面——这是为了防止图像之类的内容不显示,但任何其他未映射的页面都会引发错误页面

基本上,这将返回您在控制器建议中配置的404错误页面(exceptionPage

 类似资料:
  • 如何在SpringMVC中实现自定义http错误处理。 例如:我有一个urlhttp://localhost:8080/demo/canvas 它显示我的画布页面,但如果用户错过了网址并键入http://localhost:8080/demo/canva 它显示了Tomcat呈现的HTTP状态404。我希望它是自定义jsp页面。

  • 这是我在SpringMVC中使用Maven的第一个应用程序。下面是应用程序结构。 控制器代码: 当我点击index.jsp中的链接时,页面应该被遍历到helloworld.jsp

  • 问题内容: 我有2 ng-包括HTML。考虑服务器中是否不存在ng-include src之一。截至目前,它只会加载空白html,并且在浏览器控制台中会显示未找到http-404文件。 因此,在这种情况下,我只想将默认错误页面(服务器中存在)加载到该特定div中,即一半显示默认错误页面,另一部分显示通过nginclude加载的正确div。 我的逻辑是,使用HTTP拦截器拦截所有HTTP调用。无论何

  • 好的,我在运行我的应用程序时遇到了这个问题,我相信这是因为版本控制。 秋季开始,我使用Tomcat 9.0.4。我使用最新的JavaSDK。 现在,我使用的是Spring版本5.0.2。 这是我的pom。xml: 这是我的web.xml: 这是我的调度器servlet。xml: 现在,我想提一件事:看看那些?我不确定这是否正确。为什么?这就是我在输出中得到的错误: 现在,我知道这是一大段文字,你可

  • 我正在Eclipse中运行tomcat 7...我得到以下错误当我运行我的html调用一个servlet来执行一个简单的计算…错误为 我的html文件是 我以前做过,但当我启动服务器时,我得到以下错误