java - Spring boot - 如何使用异常处理程序处理页面未找到异常

标签 java spring spring-mvc spring-boot

我正在制作一个处理程序,当用户尝试访问不存在的 url 时,我应该能够将用户重定向到登录页面或自定义错误页面,我正在使用异常处理程序来捕获错误,但是问题是它没有转到处理程序,而只是给了我一个白色标签错误页面..

代码如下:

@ExceptionHandler(value = ResourceNotFoundException.class)
    public String exception(ResourceNotFoundException e, HttpServletRequest request, RedirectAttributes redirectAttributes) {
        long now = new Date().getTime();
        long lastAccessed = request.getSession().getLastAccessedTime();
        boolean isNotLoggedIn = (now - lastAccessed) <= 0L;

        if (isNotLoggedIn) {
            return "forward:/login";
        }

        return "forward:/access-forbidden?errorMessage=Page Not found.";
    }

最佳答案

我想你可以试试这个,至少它对我有用:

  1. application.properties 中添加这两个属性:
spring.mvc.throw-exception-if-no-handler-found=true
spring.resources.add-mappings=false
  1. 将异常类型从 ResourceNotFoundException 更改为 NoHandlerFoundException
@ExceptionHandler(value = NoHandlerFoundException.class)
public String exception(NoHandlerFoundException e, ...) {

关于java - Spring boot - 如何使用异常处理程序处理页面未找到异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52927910/

相关文章:

rest - 在Spring REST应用程序中使用自定义消息处理通用HTTP异常

java - JDBC Hibernate - Mysql 连接错误

java - 加密/解密java类并使用自定义类加载器在tomcat中实现和部署

java - 如何在动态更新的 JFace TableViewer 上添加 ViewerFilter?

java - 如何在java中使用keyListener

java - 使用 Spring MVC 提交表单时出错 - HTTP 状态 404

java - 警告 : org. springframework.web.servlet.PageNotFound - 不支持请求方法 'GET'

java - 在 Spring 4.1 中注入(inject)泛型列表

java - 如何让Javamelody使用不同的端口(Spring Boot+暴露的两个HTTP端口)

java - org.springframework.web.client.HttpClientErrorException : 405 null/WARNING: Request method 'POST' not supported