是否可以添加未找到的" 404页面"到我的Spring Boot Controller类?

时间:2018-04-27 12:31:58

标签: java spring-boot

我希望在我的Spring应用程序中添加404错误页面,但我无法找到有关如何执行此操作的文档/建议。我目前只通过Eclipse在本地运行应用程序。根据我对Spring Applications的理解,可能有两种方法可以做到这一点。

  1. 在控制器类中输入一个方法,该方法接受某种条件的@RequestMapping值,如果它无法识别URL,将打开404页面,例如{{1 }}。我用localhost/sdksdjhfkjsdkjfsdkj尝试了下面的方法,但它没有用。当我尝试包含@ResponseStatus时会出现错误,但我只是将其包含在下面,以便让您了解我想要实现的目标。

    @RequestMapping
  2. 在我的网络配置类中添加某种@RequestMapping(value = HttpStatus.NOT_FOUND) public String pageNotFound() { return "404"; } 方法,如果没有与用户输入的网址匹配,则会加载404网页。我将在下面提供我的配置方法的示例。

    HTTPSecurity

    }

  3. 但是我在@Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() .antMatchers("/resources/**", "/registration").permitAll() .anyRequest().authenticated() .and() .formLogin() .loginPage("/login") .permitAll() .and() .logout() .permitAll(); //Disable csrf token as it is not needed for now and is preventing the applciation from running properly http.csrf().disable(); 文档中找不到任何方法。

    有没有人有任何我可以看到的建议或文件来完成这项任务?

1 个答案:

答案 0 :(得分:1)

如果没有所请求资源(URL)的处理程序,DispatcherServlet将抛出NoHandlerFoundException。您可以在ExceptionTranslator中捕获异常并返回所需的任何响应。例如:

@ControllerAdvice
public class ExceptionTranslator {

    @ExceptionHandler(NoHandlerFoundException.class)
    @ResponseBody
    public ResponseEntity<ErrorVM> processNoHandlerFoundException(NoHandlerFoundException ex) {
        return new ResponseEntity();
    }
}

您可以根据springframework api向响应实体添加状态和消息: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/http/ResponseEntity.html